2017-01-11 28 views
0

我需要爲我的公司中的概念證明擴展一組文件。基本上有幾個1000row文件,每個文件大約有200列,我想將它們綁定到達到所需的比例。這可能是100萬行或更多。使用rbind(union)擴展R中的數據幀

輸出將基本上是重複的數據(聽起來有點傻),我意識到這一點,但我只需要證明一些東西。

我曾經在R A while循環與此類似:

while(nrow(df) < 1000000) {df <- rbind(df,df);} 

這似乎是工作,但它看起來有點計算繁重。它可能需要10-15分鐘。

我雖然創建一個功能(如下圖),並使用對DF的「應用」家庭功能,但未能取得成功:

scaleup_function <- function(x) 
{ 
    while(nrow(df) < 1000) 
    { 
    x <- rbind(df, df) 
    } 

} 

是否有這樣做的更快,更有效的方式(它不需要與rbind)?

非常感謝, 若昂

+2

你爲什麼不先檢查'黯淡()',加入他們,並可能告訴我們如何許多'df'都是'rbind()'。然後只需要一個步驟,不需要循環。只是一個想法 –

+1

在一個循環中增加一個對象(特別是一個data.frame)就是編程時可以做的最慢的操作。這就是你正在證明的。這裏已經討論了多種選擇。可能你可以做類似'df [rep(seq_len(nrow(df)),1000),] [1:1000,]'。 – Roland

回答

0

這應該做的伎倆:每個data.frame的

df <- matrix(0,nrow=1000,ncol=200) 
reps_needed <- ceiling(1000000/nrow(df)) 
df_scaled <- df[rep(1:nrow(df),reps_needed),]