Кажется, что есть разница в скорости в зависимости от того, как вы указываете столбцы, которые будут выбраны из таблицы данных: x[, .(var)]
против x[, c('var')]
. Причина может быть совершенно очевидной, однако на странице справки обозначения .()
, list()
и c()
кажутся взаимозаменяемыми. Я работаю с довольно большими наборами данных, поэтому для меня это немного важно :-)
Пример (порядок вызова не влияет на скорость):
x <- as.data.table(as.character(rnorm(20000000,1,0.5)))
setkey(x, V1)
tic(); x[, .(V1)]; toc()
25.08 sec elapsed
tic(); x[, c('V1')]; toc()
0.28 sec elapsed
tic(); x[, 1]; toc()
0.02 sec elapsed
> sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tictoc_1.0 data.table_1.12.8
loaded via a namespace (and not attached):
[1] compiler_3.6.1 tools_3.6.1 lifecycle_0.2.0 rlang_0.4.6