【发布时间】:2010-04-28 16:20:39
【问题描述】:
我有一个名为 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-like 边距功能滚动到 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]))
)
【问题讨论】: