2015-03-24 90 views
0

我想要一個循環來生成data.frames。這是我正在尋找的一般想法的[不正確]循環。rbind從循環輸出data.frame

for (i in 1:2){ 
a <- c(2, (i+10)) 
b <- c((i+10)), 5)) 
c[i] <- data.frame(a,b) 
} 
rbind(c) 

我想要的輸出是這樣的:

2 11 
11 5 
2 12 
12 5 

這個問題已經被問過,但得到的答覆是一個直接的解決方案,沒有解釋。我不知道如何閱讀它。它涉及do.callmget

+0

然後我會說這個問題是一個騙局。如果你不懂語言的方法,你需要閱讀文檔。 – Mathemats 2015-03-24 23:13:14

+0

我已閱讀幫助文件。我仍然不明白。先前的問題沒有提供可複製的代碼。那麼我如何獲得援助呢? – Andrew 2015-03-24 23:16:23

+1

也許[這](http://stackoverflow.com/questions/10801750/whats-the-difference-between-lapply-and-do-call-in-r)更有幫助嗎? 'do.call'很有用,因爲你可以通過名字執行一個函數並傳遞一個參數列表。例如,如果你想要綁定列表中的一串數據幀,你可以執行'do.call('rbind',mylistofdataframes'),希望這個列表很容易用'lapply'或類似的方法創建。作爲另一個例子,'rbind(mtcars,mtcars,mtcars)'和'do.call('rbind',list(mtcars,mtcars,mtcars))'相當於 – rawr 2015-03-24 23:21:33

回答

5

您不必爲此使用do.call。只需修改循環,如下圖所示:

out=NULL 
for (i in 1:2){ 
a <- c(2, (i+10)) 
b <- c((i+10), 5) 
c <- data.frame(a,b) 
out=rbind(out,c) 
} 
out 
# a b 
# 2 11 
# 11 5 
# 2 12 
# 12 5 

:你有一大堆的B對象額外的括號。我也拿出來了。