首页 > 解决方案 > 大data.frame的子集在fwrite后返回“未定义的列选择”错误

问题描述

尝试写出 data.frame 的子集时发生了一些奇怪的行为。不幸的是,由于文件很大,我无法共享数据,这就是我要写出子集的原因。我也无法用示例数据复制错误。

sco 是一个具有 84 列和 326,991,572 行的 data.frame 对象。这是代码:

sco = as.data.frame(sco)
setDTthreads(36)
data.table::fwrite(sco[,c(1:10)], paste0("PCA_values1.csv"))
data.table::fwrite(sco[,c(11:20)], paste0("PCA_values2.csv"))
data.table::fwrite(sco[,c(21:30)], paste0("PCA_values3.csv"))
data.table::fwrite(sco[,c(31:40)], paste0("PCA_values4.csv"))
data.table::fwrite(sco[,c(41:50)], paste0("PCA_values5.csv"))
data.table::fwrite(sco[,c(51:60)], paste0("PCA_values6.csv"))

第一个子集写得很好。然后第二个给我这个错误:

Error in '[.data.frame'(sco, , c(11:20)) : undetermined columns selected

data.table::fwrite 是否将 data.frame 转换为 data.table 因为它非常大?或者对对象进行其他更改以使子集不再起作用?

最初,数据是 prcomp 的输出,所以我还有其他几个非常大的 data.frame 对象,它们表现出相同的行为。

标签: rdataframedata.tablelarge-data

解决方案


推荐阅读