2016-11-25 66 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 = "")) 
相關問題