data.table的性能,用于较小数据集的摘要统计

时间:2016-10-25 14:36:05

标签: r data.table

使用data.table j表示法计算较小数据集(例如100,000行或更少)的整个列的摘要统计信息(不进行分组处理),与直接访问元素相比,性能似乎出乎意料地慢:

library(microbenchmark)
library(data.table)
df <- data.frame(x=rnorm(10000, 0, 0.05))
dt <- data.table(df)

microbenchmark(prod(df$x + 1)^(12 / NROW(df)) - 1,
               prod(dt$x + 1)^(12 / NROW(dt)) - 1,
               dt[,prod(x + 1)^(12 / .N) - 1], times=10000)

Unit: microseconds
                             expr     min       lq      mean   median       uq
 prod(df$x + 1)^(12/NROW(df)) - 1  51.210  58.0725  85.34422  62.0715  69.8885
 prod(dt$x + 1)^(12/NROW(dt)) - 1  68.514  76.4710 107.49639  80.6950  89.5425
    dt[, prod(x + 1)^(12/.N) - 1] 777.879 829.9515 951.92379 852.7325 916.0155

这是预期的事情,还是我没有正确使用data.table,或者缺少某些选项?

0 个答案:

没有答案