【发布时间】:2021-12-04 07:00:59
【问题描述】:
我想在一个数据库中合并两个不同长度的大型数据库的 2 列,问题是合并命令给了我错误
“错误:无法分配大小为 54.2 Gb 的向量”。
我在具有 32GB RAM 的 Windows 10 上运行。 我真的不明白为什么最终的数据库这么大,两个起始数据库是 350k 行之一和 50k 行之一。如果我使用 SPSS 手动合并这两个列,则生成的数据库大约为 2MB。我需要自动化这个过程,所以手动操作是不可能的。
dbA<-MatrixLarge$varAlpha
dbB<-MatrixSmall$varBeta
# creating the column id for dataframe 1
dbA = cbind("id"=rownames(dbA),dbA)
# creating column id for dataframe 2
dbB = cbind("id"=rownames(dbB),dbB)
#merging two dataframe
dbFinal<-merge(dbA,dbB,all=T)
【问题讨论】:
-
我已经将 r 中的内存限制增加到 100GB,但 id 没有帮助
-
尝试使用
data.table包。来自其文档:“n 快速聚合大数据(例如 RAM 中的 100GB)、快速有序连接、快速添加/修改/删除列......”。这里是merge function 形式data.table,这里是包vignette -
尝试指定
merge(dbA, dbB, by = "id", all = TRUE) -
我怀疑问题出在数据库的类别以及变量的形状上。是否可以共享一些示例数据,例如数据库的前 50 行?我在下面添加了一个简单的可重现示例,它可以正常工作:
-
@mhovd 成功了!!非常感谢,真的