是否可以在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
答案 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))