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
但这是我目前看到的唯一解决方案。
这里有一个方法,它使用 replicate
和 data.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 = ""))
我的目标是创建一个 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
但这是我目前看到的唯一解决方案。
这里有一个方法,它使用 replicate
和 data.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 = ""))