1

当我尝试使用 smooth.spline() 函数时,dlply() 给我一个错误:“找不到对象'...'”。下面的示例创建一些数据并显示“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

有任何想法吗???

4

1 回答 1

2

呃,太多纠结的评估和环境可能是问题所在。我通常不会与这些事情作斗争,我只是解决它们:

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这样做,我不知道。

于 2012-06-17T22:30:34.810 回答