假设我们有一个巨大的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)
非常感谢。