2016-11-25 64 views
1

我的目标是创建与列的数目i名为ColumnName_1一个data frame - >ColumnName_i的R - 构建具有多个列的数据帧,而不分配

其结果将是为i = 3

structure(list(ColumnName_1 = c(0, 0, 0), ColumnName_2 = c(0, 
0, 0), ColumnName_3 = c(0, 0, 0)), .Names = c("ColumnName_1", 
"ColumnName_2", "ColumnName_3"), row.names = c(NA, -3L), class = "data.frame") 

我从它的不推荐使用assign别人主题的其他问题理解,但它是我目前看到的唯一解决方案。

回答

1

我们可以使用下面的,假如你希望m行和列n

data.frame(matrix(0, nrow = m, ncol = n, 
      dimnames = list(NULL, paste0("ColumnName_", 1:n)))) 

所有其他的答案使用一个循环来创建列,而该解决方案完全量化。

0

下面是一个使用replicatedata.frame构建的自己喜欢的任意大小的空data.frame(带数字变量),然后使用setNames提供变量名的方法。

setNames(data.frame(replicate(3, numeric(3), simplify=FALSE)), 
     paste0("colName", seq_len(3))) 

    colName1 colName2 colName3 
1  0  0  0 
2  0  0  0 
3  0  0  0 

的第一个参数复制提供的列数,第二个参数numeric(3)提供的行数。

1

一个版本lapply

i <- 3 
setNames(as.data.frame(lapply(1:i, function(k) c(0, 0, 0))), 
     paste("ColumnName_", 1:i, sep = "")) 
相关问题