2017-07-20 15 views
0

Previous$Col1Previous$Col3の2つの列を1つのdata.frameに結合しようとしています。エラー2つの列をマージする

これは私がしようとしたものです:間違った何が起こっている

Error: cannot allocate vector of size 24.0 Gb 

と、私はこれを修正するために何をすべき:

x<-data.frame(Previous$Col1) 
y<-data.frame(Previous$Col3) 
z<-merge(x,y) 

そして、私は、コンソール上でこのerrorを得たいくつかの理由で?

80000ishの行を持つ2つの列のデータフレームは、どのように24 GBのメモリを占有することができますか?

ありがとうございます!

+2

エラーでメモリが不足していると表示されます。 2つのベクトルを「マージ」するのはかなり珍しいことです。あなたの希望する出力は何ですか? – lmo

+0

https://stackoverflow.com/questions/5171593/r-memory-management-cannot-allocate-vector-of-size-n-mb – AidanGawronski

+0

[Rメモリ管理の複製可能/サイズnのベクトルを割り当てることができません] Mb https://stackoverflow.com/questions/5171593/r-memory-management-cannot-allocate-vector-of-size-n-mb) – AidanGawronski

答えて

1

合計の1.28e + 10要素(私が正しい場合は約51GB)である80000×80000行と2列の完全なデカルト積を作成しています。あなたのマージで何を達成しようとしていますか?

> 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

は、これらの列は、同じ元のdata.frameから来るので、さらに基地R.からdplyrパッケージまたはcbindから

bind_cols(Previous$Col1,Previous$Col3) 

又は

cbind(Previous$Col1,Previous$Col3) 

bind_colsを使用してみてください。

select(Previous,Col1,Col3) 
関連する問題