r - dlply with smooth.spline

时间:2012-06-17 22:13:51

标签: r plyr

dlply()给我一个错误:当我尝试使用smooth.spline()函数时,“找不到”对象'...'。下面的示例创建了一些数据并显示“lm”将如何工作,但“smooth.spline”不会。请注意,我在函数参数中进行了一些算术运算,但这不是错误的原因。

#some data:
df <- data.frame(count=rep(1:5,2),VSS=runif(10,0.45,0.55), 
      TSS=runif(10,0.9,1.3),sl=c(rep("a",5),rep("b",5)))
#works:
dlply(df,.(sl),lm,formula=VSS/TSS~count)
#doesn't work:
dlply(df,.(sl),smooth.spline,x=count,y=VSS/TSS,all.knots=TRUE)
#output:
Error in xy.coords(x,y) : Object 'VSS' not found

任何想法???

1 个答案:

答案 0 :(得分:1)

呃,太多纠结的评估和环境可能是问题所在。我一般不会打这些东西,我只是解决它们:

foo <- function(x,xvar,yvar,...){
    smooth.spline(x = x[,xvar],y = x[,yvar],...)
}
df$rat <- with(df,VSS/TSS)
dlply(df,.(sl),foo,xvar = "count",yvar = "rat",all.knots = TRUE)

但可能有办法欺骗dlply这样做,我不知道。