我想在一个函数中创建一个循环来创建一个具有可变列数的 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,但它不起作用......
有很多方法可以做这种事情。您的第一个问题是您的“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 用于行名,那么您应该遵循 James 的示例:
x2 <- data.frame(rbind(c(1,2,3), c(4,5,6)))
rownames(x2) <- c("a","b")
您是否将 b 中的 2 个列表作为单独的变量保存?
如果是这样,您可以使用:
x<-data.frame(rbind(b1,b2))
rownames(x)<-a
另一种方式
a = c("a","b")
b = list(c(1,2,3), c(4,5,6))
library(plyr)
df <- ldply(b)
rownames(df) <- a
十分感谢 !在阅读您的回复之前,我尝试了另一种方法:
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' 可以是行名或列,目的是将 data.frame 导出为 CSV 文件。