R 数据性能。较小数据集汇总统计表

R 数据性能。较小数据集汇总统计表,r,data.table,R,Data.table,当使用data.tablej表示法在较小的数据集(例如100000行或更少)上计算整列(无需分组处理)的汇总统计信息时,与直接访问元素相比,性能似乎出人意料地慢: 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,

当使用data.table
j
表示法在较小的数据集(例如100000行或更少)上计算整列(无需分组处理)的汇总统计信息时,与直接访问元素相比,性能似乎出人意料地慢:

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
库(微基准)
库(数据表)

df不使用10k迭代,使用更大的数据集。如果我确实使用
df,它似乎在100万行左右收支平衡,因此似乎有一个固定的开销。我编辑了这个问题以反映这一点。问题是,有没有办法避免这些开销,或者在某些情况下最好避免使用
[.data.table
语法,例如当它在一个函数中使用时,该函数在许多较小的数据集上被多次调用。好的。即使在这种情况下,仍然需要几微秒(…将在…)来编辑它.我想如果你使用的是数百万人使用的某个在线应用程序,这可能很重要…?这不是我在正常统计工作中能想象到的问题。它是在迭代过程中调用的,通过算法生成了许多小数据集。这在这一点上不是一个主要问题,但因为我不是一个真正的数据收集者.餐桌专家,我想知道我是否遗漏了什么。