【发布时间】:2017-04-23 16:49:19
【问题描述】:
我只想分别计算每一列的最大值。使用简单的sapply 进入内存溢出:
# dt is my data.table object
res <- sapply(dt, max, na.rm=T) # fails due to memory problems
它是一个 100 万行和 1000 列的稀疏表,总大小为 11 GB。
我正在处理文件train_date.csv 并使用以下代码行:
require(data.table)
dtDate <- fread(paste0(filePath, "train_date.csv"))
dim(dtDate)
require(pryr)
object_size(dtDate)
【问题讨论】:
-
您使用的代码到底是什么?数据大小是多少?你的规格是什么?你读过this 吗?有用于
lapply用法的idiom 示例等等。 -
或许,使用
apply(df, 2, max)会更好。 -
这是一个 1 mio 行和 1000 列的稀疏表,总大小为 11 GB @DavidArenburg。
-
这不是您运行
data.table代码的方式。你应该阅读我上面链接的介绍 -
mpjdem 的回答遵循了 data.table 常见问题页面的这个建议:cran.r-project.org/web/packages/data.table/vignettes/…。
标签: r data.table