如何通过子集更新data.table?

时间:2015-06-10 06:36:52

标签: r data.table subset large-data

假设我们有一个巨大的data.frame data(60000x8000),它已被setDT(data)转换为data.table。这将创建data的引用,而不是复制它,这很好。然后我想获得一个子集,例如data的前40000行。

id <- rep(FALSE, nrow(data))
id[1:40000] <- TRUE
data <- subset(data, id)

但是,上面的代码效果不好,因为它会复制data,我需要手动调用gc()来释放内存。在我的示例中,subset消耗了额外的1.6 GB,可以由gc()完全释放。我已经阅读了一些关于data.table使用的文件,也许我错过了一些重要的事情。我发现的示例着重于提取data.table的子集,然后将其分配给新变量,而不是更新原始变量。例如:

new.data <- subset(data, id)

非常感谢。

0 个答案:

没有答案