小编pet*_*ski的帖子

为什么:=比`:=`()快?

通常,我使用函数形式`:=`()来计算中的多个列data.table,认为这是最有效的方法。但是我最近发现它比简单地重复使用慢:=。至少在我的电脑上。

我猜想功能形式可能会有一些开销,:=但这是它变慢的全部原因吗?我只是出于好奇而问,以了解data.table更好的内部原理。

library(data.table)


n <- 5000000
dt <- data.table(a = rnorm(n),
                 b = rnorm(n),
                 c = rnorm(n))

dt_a <- copy(dt)

system.time({
  dt_a[, d := a + b]
  dt_a[, e := b + c]
  dt_a[, f := a + c]
})
#>    user  system elapsed 
#>   0.076   0.060   0.136

dt_b <- copy(dt)

system.time({
  dt_b[, `:=`(d = a + b,
              e = b + c,
              f = a + c)]
})
#> …
Run Code Online (Sandbox Code Playgroud)

r data.table

18
推荐指数
1
解决办法
322
查看次数

标签 统计

data.table ×1

r ×1