6

是否可以在 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
4

2 回答 2

9

将列名包装在单个反引号 (`) 中似乎可以解决问题。

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

您还可以使用列索引,这可能会或可能不会吸引人,具体取决于您的 data.frame 的大小以及您事先对每列位置的了解。

ddply(df, 2, summarize, r.avg=mean(response))
于 2011-07-04T08:40:05.560 回答
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))
于 2011-07-04T08:46:16.363 回答