У меня есть список под названием cols
с названиями столбцов в нем:
cols <- c('Column1','Column2','Column3')
Я бы хотел воспроизвести эту команду, но с обращением к списку:
data.frame(Column1=rnorm(10))
Вот что происходит, когда я пробую:
> data.frame(cols[1]=rnorm(10))
Error: unexpected '=' in "data.frame(I(cols[1])="
То же самое произойдет, если я заключу cols[1]
в I()
или eval()
.
Как я могу передать этот элемент из вектора в команду data.frame()
?
Обновление:
Для некоторой предыстории я определил функцию calc.means()
, которая принимает фрейм данных и список переменных и выполняет большую и сложную операцию ddply, подводя итоги на уровне, заданном переменными.
Что я пытаюсь сделать с помощью команды data.frame()
, так это вернуться вверх по уровням агрегации до самого верха, повторно выполняя calc.means()
на каждом шаге и используя rbind()
, чтобы склеить результаты друг с другом. Мне нужно добавить фиктивные столбцы со значениями «Все», чтобы rbind работал правильно.
В основном я добавляю cast
-подобные функции полей в ddply, и я не хотел бы повторно вводить имена столбцов для каждого запуска. Вот полный код:
cols <- c('Col1','Col2','Col3')
rbind ( calc.means(dat,cols),
data.frame(cols[1]='All', calc.means(dat, cols[2:3])),
data.frame(cols[1]='All', cols[2]='All', calc.means(dat, cols[3]))
)