R 合并多个大型数据集-内存问题
我在R中有大约15个不同的数据集,需要合并成一个大数据集 将它们结合起来将创建一个包含约1120个变量和约1500个观测值的数据集 合并前5个数据集(大约700个变量)没有问题,但在尝试合并第6/7个数据集时,R要么卡住,要么出现错误消息: 错误:无法分配大小为10.7 Mb的向量 我尝试了不同的方法来编写此代码(函数/循环),但这是最简单的方法,通过这种方法,我了解到它会被卡在第6个数据集上:R 合并多个大型数据集-内存问题,r,merge,R,Merge,我在R中有大约15个不同的数据集,需要合并成一个大数据集 将它们结合起来将创建一个包含约1120个变量和约1500个观测值的数据集 合并前5个数据集(大约700个变量)没有问题,但在尝试合并第6/7个数据集时,R要么卡住,要么出现错误消息: 错误:无法分配大小为10.7 Mb的向量 我尝试了不同的方法来编写此代码(函数/循环),但这是最简单的方法,通过这种方法,我了解到它会被卡在第6个数据集上: #Merging the first two data sets #bindedDataNames
#Merging the first two data sets
#bindedDataNames is a chr vector with the names of all the datasets that need
#to be merged.
Age11_twins_22022017 <- merge(eval(parse(text = bindedDataNames[1]))
[,-c(1:2)],
eval(parse(text = bindedDataNames[2]))
[,-c(1:3)],
by=c("ifam","ID"))
#Loop to merge all datasets. With print I saw it goes without a problem until
#the 6th dataset
for (cnt2 in 3:17) {
print(cnt2)
Age11_twins_22022017 <- merge(Age11_twins_22022017,
eval(parse(text = bindedDataNames[cnt2]))
[,-c(1:3)],
by=c("ifam","ID"))
}
#合并前两个数据集
#bindedDataNames是一个chr向量,其中包含所需的所有数据集的名称
#合并。
这绝对不是一个大数据集。要么你在一台可供R使用的内存非常少的计算机上工作,要么你的代码效率很低/有漏洞。请先共享您的代码。我曾尝试在两台不同的计算机上运行此代码,但都无法运行。我现在已经在上一篇文章中添加了我尝试编写的最简单版本的代码。非常感谢。为什么需要eval(parse(text=)
?你确定通过合并只得到大约1500个观测值吗?在它失败之前已经有多少行了?或者你的意思是cbind
而不是merge
?我在R中有18个不同的对象,每个对象都是一个数据帧。为了在循环中访问它们,我有一个带有名称的chr向量,eval(parse(text=)
从chr向量中获取名称并将其转换为一个对象。如果我从所有对象中创建一个列表,并通过该列表访问它们,这能有所帮助吗?我的意思是进行merge
(而不是cbind
),因为每个数据帧都有不同的参与者信息,按标识符进行合并很重要。