我有几个字符串的列表,我需要从中创建一个相同数据帧的列表。 例如,字符串是a-d。列表应该是
[1] xa
[2] xb
[3] xc
[4] xd
其中每个元素都是一个数据帧。每个数据框的列都应该从另一个列表中命名(列名在数据帧中是相同的)
strings <- c("a", "b", "c", "d")
DFList <- list()
for (i in 1:4){
DFList <- c(DFList,
assign(paste0("x",strings[i]),
data.frame(matrix(0,ncol=5,nrow=0))))
}
不起作用。它返回4个数据帧,以及20个元素(4 * 5列)的列表。
在创建它们之后,我需要能够在稍后的脚本中为这些数据帧中的某些数据帧添加行,这也是我无法弄清楚的。
我该如何解决这个问题?
答案 0 :(得分:1)
您可以将replicate
或lapply
与setNames
setNames(replicate(4, data.frame(matrix(0,4,5)), simplify=FALSE), paste0("x", strings))
data.frames的默认列名是&#34; X1&#34;,&#34; X2&#34;等。因此,如果您有另一个列的名称列表,请将其包含在另一个setNames
中,例如setNames(data.frame(...), otherNames)
。
lapply
语法非常相似,
setNames(lapply(1:4, function(i) data.frame(matrix(0,4,5))), paste0("x", strings))