我有一个列表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])="
如果我换成or cols[1]
,也会发生同样的事情。I()
eval()
如何将向量中的那个项目输入到data.frame()
命令中?
更新:
对于某些背景,我定义了一个函数calc.means()
,它接受一个数据框和一个变量列表,并执行一个大而复杂的 ddply 操作,在变量指定的级别进行汇总。
我试图用该命令做的是将聚合级别返回到最顶层,在每一步data.frame()
重新运行并使用将结果粘合到另一个上。我需要添加具有“全部”值的虚拟列,以使 rbind 正常工作。calc.means()
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]))
)