2013-08-02 78 views
0

我正在使用ff軟件包並試圖進行交叉連接。我知道ffdf合併只執行內部和外部的外部連接。有什麼調整,我可以做交叉加入。R交叉加入ff對象

a=as.ffdf(data.frame(a=1:10,b=11:20)) 
z=as.ffdf(data.frame(y=2:4)) 

請幫我cross join a and z ff object.

感謝

+0

一種在循環中使用'ffdfappend函數的方法'。這將像交叉連接一樣工作。 – Ajay

回答

0

從包ffbase使用expand.ffgrid和merge.ffdf的組合。

require(ff) 
a=as.ffdf(data.frame(a=1:10,b=11:20)) 
z=as.ffdf(data.frame(y=2:4)) 

require(ffbase) 
a$a.key <- ikey(a) 
z$z.key <- ikey(z) 
combined <- expand.ffgrid(a.key = a$a.key, z.key = z$z.key) 
combined <- merge(combined, a, by.x="a.key", by.y="a.key", all.x=TRUE, all.y=FALSE) 
combined <- merge(combined, z, by.x="z.key", by.y="z.key", all.x=TRUE, all.y=FALSE) 
+0

運行帶有大數據集的expand.ffgrid時出現內存錯誤。 – Ajay

+0

With expand.ffgrid?您可以在發生這種情況時製作一個可重現的例子。我可以在2Gb RAM的32位計算機上運行此操作,以獲得具有10億行的ffdf。要求(ffbase);一個< - ffseq_len(1000); b < - ffseq_len(1000000); x < - expand.ffgrid(a,b); – jwijffels