2012-06-21 2 views
1

Начиная с пустой фреймы, мне нужно заполнить dataframe следующим образом: цикл for генерирует фиксированное количество значений на каждой итерации, и мне нужно добавить новый столбец со значениями в этом списке и присвоением столбцу уникального имени, col_i (где i - i-я итерация цикла).Добавить столбец в Dataframe из списка значений

Как это сделать (казалось бы, простая задача)?

+3

Как отмечено ниже, 'cbind' является хорошей отправной точкой. Кроме того, имейте в виду, что в целом, начиная с пустой структуры данных и добавления в нее вещей, буквально один из худших возможных способов сделать что-то в R. Хорошей ссылкой является Circle 2 of [R Inferno] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf). – joran

+0

@ user1030497 Добро пожаловать в SO! Если какой-либо из приведенных ниже ответов решает вашу проблему, сделайте ее принятой, щелкнув галочку рядом с ответом. –

ответ

5

Наиболее эффективный способ построить dataframe кусочно является для хранения деталей в предварительно выделенной списке, а затем поместить их вместе после этого.

Например:

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

Смежные вопросы