【发布时间】:2018-10-22 22:43:53
【问题描述】:
我正在尝试计算大数据表中的行均值,例如
set.seed(1)
DT <- data.table(a = rnorm(4000000), b = rnorm(4000000), c = rnorm(4000000),
d = rnorm(4000000), e = rnorm(4000000))
它还包含随机 NA 和许多具有完整 NA 的行(我不知道如何在上面的示例中随机插入这些)。
我正在使用以下代码来计算行总和:
DT[,sums:= rowMeans(.SD,na.rm=T)]
但这需要几分钟。 有什么办法可以优化这个代码/比rowMeans更快的解决方案?
【问题讨论】:
-
rowMeans计算行总和?为什么会这样? -
您只需
DT[,sums:= rowSums(.SD,na.rm=TRUE)] -
请记住,
data.table仍然是data.frame,因此您仍然可以使用与data.frame对象相同的方法对其应用 -
正如@Seymour 所说,您仍然使用 data.frame 的事实可能会使其变慢。尝试将您的 data.frame 转换为矩阵。我在一些辩论中看到它使计算更快。
-
@DJV 你所说的绝对是真的!将其转换为矩阵使其速度成倍增长!
标签: r optimization datatable