从空数据框开始,我需要按如下方式填充数据框:for循环在每次迭代中生成固定数量的值,我需要添加一个新列,其中包含该列表中的值,并给出列一个唯一的名称,col_i(其中i是循环的第i次迭代)。
如何完成这项(看似简单的任务)?
答案 0 :(得分: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
答案 1 :(得分: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