2012-06-21 53 views
1

與空數據幀開始的名單,我需要填寫數據框如下:for循環生成在每次迭代中值的一個固定的號碼,我需要添加一個新列在該列表中的值,並給予列的唯一名稱,col_i(其中i爲第i次循環迭代)。添加一列到數據幀從價值觀

怎麼可以這樣(看似簡單的任務)來完成?

+3

如下面所指出的,'cbind'是一個很好的起點。此外,請注意,在一般情況下,從一個空數據結構和添加的東西是字面上的最壞可能的方式來做事R.一個很好的參考之一是[R地獄]的圈2(HTTP:/ /www.burns-stat.com/pages/Tutor/R_inferno.pdf)。 – joran

+0

@ user1030497歡迎SO!如果下面的答案中的任何一個解決了您的問題,請點擊答案旁邊的複選標記,接受答案。 –

回答

5

建立一個數據幀的分段是存儲在預先分配的列表中選擇部分最有效的方法,然後把它們放在一起之後。

例如:

num.iters <- 10 
l <- vector('list', num.iters) 
for (i in 1:num.iters) { 
    l[[i]] <- rnorm(3)      # the column data 
    names(l)[i] <- paste('Col', i, sep='.') # the column name 
} 
do.call(cbind, l) # ... if your cols are the same datatype and you want a matrix 
data.frame(l)  # otherwise 
3

這有什麼錯?cbind

The functions cbind and rbind are S3 generic, with methods for data frames. 
The data frame method will be used if at least one argument is a data frame 
and the rest are vectors or matrices. 

?colnames也可以應用於data.frames

相關問題