ddply和引用变量中的空格

时间:2011-07-04 08:33:18

标签: r plyr

是否可以在ddply中使用空格?

我正在使用列名中包含大量空格的电子表格中的数据,我想保留这些名称,因为稍后我想要使用与原始列相同的列名导出此数据。有200多列,使用make.names当然会给我正确的名称,但后来我丢失了原始的列名。

然而ddply似乎不喜欢空格?有解决方法吗?

lev=gl(2, 3, labels=c("low", "high"))
df=data.frame(factor=lev, "fac tor"=lev, response=1:6, check.names = FALSE)

> ddply(df, c("factor"), summarize, r.avg=mean(response))
factor r.avg
1    low     2
2   high     5

> ddply(df, c("fac tor"), summarize, r.avg=mean(response))
Error in parse(text = x) : <text>:1:5: unexpected symbol
: fac tor

2 个答案:

答案 0 :(得分:9)

将列名称包装在单个后面的刻度(`)中似乎可以解决问题。

ddply(df, "`fac tor`", summarize, r.avg=mean(response))

您还可以使用列索引,这些索引可能有吸引力,也可能没有吸引力,具体取决于您的data.frame有多大以及您事先知道每个列的位置。

ddply(df, 2, summarize, r.avg=mean(response))

答案 1 :(得分:1)

我只是使用正则表达式将空格转换为某些无意义的字符,然后在最后转换回来:

lev=gl(2, 3, labels=c("low", "high"))
df=data.frame(factor=lev, "fac tor"=lev, response=1:6, check.names = FALSE)
colnames(df) <- gsub(" ","~",colnames(df))