У меня есть список с именем 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()
, чтобы склеить результаты друг с другом. Мне нужно добавить фиктивные столбцы со значениями «All», чтобы 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]))
)