2015-06-28 45 views
-4

我正在循環例如從列表[「A」,「B」,「C」], 我將運行for循環 以獲取v < - 對於不同的運行,它有v1,v2,v3不同的值 我想使用cbind(「A」,「v1」)#我想要三行(3次循環後)一起形成一個數據幀。如何通過在r中循環來放置數據幀中的許多行

最後,我想其中有

"A" v1 
"B" v2 
"C" v3 

如何獲取輸出格式的數據幀?謝謝!

+0

如果你說列表,它是什麼?一個向量,一列數據幀,還是一個真正的列表?而v#,它們是其他東西的佔位符還是隻是字面值加數字?他們中有多少人,他們從哪裏來? – vaettchen

回答

2

我可能誤解了這個請求,但下面是你要找的東西?

input <- c("A", "B", "C") 
data.frame(x=input, y=paste0("v", seq_along(input))) 
# x y 
# 1 A v1 
# 2 B v2 
# 3 C v3 

請注意,您在您的問題(重複建設行和通過rbind與現有數據合併)中提到的方法是一個壞主意,這既是因爲它會佔用大量的更多的輸入(注意,我能做的操作在一行中),也因爲效率低下(您可以在R inferno的第二個圓圈中閱讀更多內容)。

+0

這是一個很好的方法。但是,我的列表有很多不能手動輸入的元素。我認爲在for循環中運行會起作用。謝謝 – cppython

+0

@cppython「輸入」也可以成爲一個列表。即「輸入< - 列表(」A「,」B「,」C「); data.frame(x = unlist(input),y = paste0(「v」,seq_along(input)))'。 for循環以C口音說R。 –

+0

@cppython你現在存儲的數據如何?只要它存儲在一個變量中,將它添加到數據框應該不會很困難。 – josliber

0

我一直堅持通過的地方在於,我要開始一個空的數據幀

df <-data.frame() 
for (e in mylist){ 
    v <- function(e) #get the value our from e by a function 
    one_row<- cbind(e, v) #cbind e, and v corresponding to e 
    new_f <-data.frame(one_row)     
    output <-rbind(output,new_f) 
} 

最後,我得到正確的輸出。

相關問題