R - 在没有分配的情况下构建具有多列的数据框

R - Construct a data frame with multiple columns without assign

我的目标是创建一个 data frame,其中 i 列名为 ColumnName_1 -> ColumnName_i

结果将是 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 但这是我目前看到的唯一解决方案。

这里有一个方法,它使用 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)提供行数。

我们可以使用以下内容,假设您需要 m 行和 n 列:

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

所有其他答案都使用循环来创建列,而此解决方案是完全矢量化的。

带有 lapply 的版本。

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