我正在尝试同时使用plyr
包中的ddply
和summarise
,但是在处理列名不断变化的情况下遇到了困难...在我的示例中,我希望能够以程序方式解析X1,而不是在ddply函数中硬编码X1。
设置一个例子
require(xts)
require(plyr)
require(reshape2)
require(lubridate)
t <- xts(matrix(rnorm(10000),ncol=10), Sys.Date()-1000:1)
t.df <- data.frame(coredata(t))
t.df <- cbind(day=wday(index(t), label=TRUE, abbr=TRUE), t.df)
t.df.l <- melt(t.df, id.vars=c("day",colnames(t.df)[2]), measure.vars=colnames(t.df)[3:ncol(t.df)])
这是我遇到困难的部分......
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(X1, value))
我不想使用X1这个术语,我想使用类似的术语。
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(colnames(t.df)[2], value))
但是出现了错误:Error in cor(colnames(t.df)[2], value) : 'x' 必须是数值类型
我还尝试了各种不同的组合,将向量值解析到cor函数的x参数中...但出于某种原因,它们都似乎无法正常工作...
有什么想法吗?