我想在函数中创建一个循环来创建一个具有可变列数的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 :(得分: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文件。