小编kgo*_*eld的帖子

按变量索引时 SD[] 的性能问题

我正在 R 中使用 data.tables。数据有多个记录,我正在尝试使用 .SD data.table 选项为每个人找到第 n 条记录。如果我将 N 指定为整数,则会立即创建新的 data.table。但是如果 N 是一个变量(就像它可能在函数中一样),代码需要大约 700 倍的时间。对于大型数据集,这是一个问题。我想知道这是否是一个已知问题,是否有任何方法可以加快速度?

library(data.table)
library(microbenchmark)

set.seed(102938)

dd <- data.table(id = rep(1:10000, each = 10), seq = seq(1:10))
setkey(dd, id)

N <- 2
microbenchmark(dd[,.SD[2], keyby = id],
               dd[,.SD[N], keyby = id],
               times = 5)
Run Code Online (Sandbox Code Playgroud)
#> Unit: microseconds
#>                      expr        min         lq       mean     median
#>  dd[, .SD[2], keyby = id]    886.269   1584.513   2904.497   1851.356
#>  dd[, .SD[N], keyby = id] 770822.875 810131.784 870418.622 903956.708
#>          uq        max neval
#> …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
56
查看次数

标签 统计

data.table ×1

r ×1