caimiao0714 我一般会用pipe function把几个data.table操作连接起来,我个人觉得这样看起来比较清楚。不知道会不会对你有帮助。比如: dt_iris <- data.table(iris) dt_iris %>% .[Sepal.Length > 5, lapply(.SD, mean), .SDcols = 2:3, by = Species] %>% .[order(Sepal.Width)]
yusong caimiao0714 管道对速度的影响还跟具体的任务有关 https://stackoverflow.com/questions/35933272/why-is-using-dplyr-pipe-slower-than-an-equivalent-non-pipe-expression-for/35935105 不过,我同意这个对不大的数据是没有什么影响的。
caimiao0714 yusong 这个benchmark是在tidyverse的语法里面进行的,不知道对于data.table的update by reference的机制,管道函数的影响有多大?我感觉应该影响会小一些,不知道有没有相关的benchmark结果?
yusong caimiao0714 就这个问题,差别很小: a 是data.table管道,b 是%>% 管道的。 Unit: milliseconds expr min lq mean median uq max neval a 1.8662 1.96935 2.506773 2.19535 2.71815 8.9969 100 b 2.0936 2.18555 2.687158 2.42140 2.79090 7.0674 100
yusong caimiao0714 这是运行5000次的: Unit: milliseconds expr min lq mean median uq max neval a 1.8473 2.07545 2.567429 2.2952 2.83055 22.2199 5000 b 2.0715 2.31290 2.838893 2.5597 3.08615 22.0069 5000