通常,我使用函数形式`:=`()来计算中的多个列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)