我正在尝试将两列Previous$Col1
和Previous$Col3
合并为一个data.frame
。
这就是我试图做的事情:
x<-data.frame(Previous$Col1)
y<-data.frame(Previous$Col3)
z<-merge(x,y)
出于某种原因,我在控制台上得到了这个error
:
Error: cannot allocate vector of size 24.0 Gb
出了什么问题,我该怎么做才能解决这个问题?
具有80000行的两列数据框如何占用24 GB的内存?
谢谢!
答案 0 :(得分:2)
您正在创建一个完整的笛卡尔产品,其中包含80000 * 80000行和两列,总共1.28e + 10个元素(如果我是正确的话,大约为51GB)。你想通过合并完成什么?
> x<-data.frame(a= c("a","b"))
> y<-data.frame(b= c(1,2,3))
> z<-merge(x,y)
> x
a
1 a
2 b
> y
b
1 1
2 2
3 3
> z
a b
1 a 1
2 b 1
3 a 2
4 b 2
5 a 3
6 b 3
你可以data.frame(Col3 = Previous$Col3, Col1= Previous$Col1)
来实现你想要的目标。
答案 1 :(得分:1)
尝试使用dplyr软件包中的bind_cols
或基础R中的cbind
。
bind_cols(Previous$Col1,Previous$Col3)
或
cbind(Previous$Col1,Previous$Col3)
此外,由于这些列来自相同的原始data.frame。可以使用dplyr包中的select()
:
select(Previous,Col1,Col3)