2010-04-01 84 views
1

我想在一個函數中創建一個boucle來創建一個可變數量的列的data.frame。如何使用未知數量的列創建data.frame?

的東西,如:

a = c("a","b") 
b = c(list(1,2,3), list(4,5,6)) 
data.frame(a,b) 

我想獲得一個數據幀,如:

a 1 2 3 
b 4 5 6 

代替我獲得:

a 1 2 3 4 5 6 
b 1 2 3 4 5 6 

謝謝!

PS:我也嘗試用rbind,但它不工作...

+0

'a'是否表示列名或行名? – Shane 2010-04-01 13:51:48

回答

3

你有B中的2只列出了持有不同的變量?

如果是這樣你可以使用:

x<-data.frame(rbind(b1,b2)) 
rownames(x)<-a 
6

有很多方法可以做到這種事情。你的第一個問題是你的「b」對象不是矩陣。您需要將其定義爲具有行和列的模式(或使用rbind)。

您可以創建數據框然後合併它們(這比開始使用矩陣要好,因爲它會將每個對象類型保持爲數字或字符等,而矩陣會丟失):

x1 <- data.frame(X=c("a","b")) 
x2 <- data.frame(rbind(c(1,2,3), c(4,5,6))) 
data.frame(x1, x2) 
    X X1 X2 X3 
1 a 1 2 3 
2 b 4 5 6 

如果X1是rownames,那麼你就應該按照詹姆斯的例子:

x2 <- data.frame(rbind(c(1,2,3), c(4,5,6))) 
rownames(x2) <- c("a","b") 
2

另一種方式

a = c("a","b") 
b = list(c(1,2,3), c(4,5,6)) 

library(plyr) 
df <- ldply(b) 
rownames(df) <- a 
0

非常感謝! 讀你的迴應之前,我嘗試另一種方法使用:

for (x in niveaux) { 
    assign(x,pi) 
    assign(paste(x,"moy"),"moy") 
    } 
# Que j'utilise ensuite avec qq chose du genre : 
assign(x,append(get(x),1)) 

但它更復雜!

奧利弗

PS: 'A' 可以是rowname或一列,目的是data.frame導出爲CSV文件。

相關問題