如何创建具有未知列数的data.frame?

时间:2010-04-01 12:54:00

标签: r dataframe

我想在函数中创建一个循环来创建一个具有可变列数的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,但它不起作用......

4 个答案:

答案 0 :(得分:6)

有很多方法可以做这种事情。你的第一个问题是你的“b”对象不是矩阵。您需要将其定义为具有行和列的(或使用rbind)。

你可以创建数据框然后组合它们(这比开始使用矩阵更好,因为它会将每个对象类型保持为数字或字符等,而矩阵会丢失它): / p>

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,那么你应该遵循James的例子:

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

答案 1 :(得分:3)

您是否将b中的2个列表作为单独的变量保存?

如果是这样,你可以使用:

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

答案 2 :(得分:2)

另一种方式

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

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

答案 3 :(得分: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文件。