当我用dlply()函数尝试smooth.spline()函数时,它给我一个错误:"Object '...‘not found“。下面的例子创建了一些数据,并展示了"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有什么想法吗?
发布于 2012-06-18 06:30:35
呃,太多复杂的评估和环境可能是问题所在。我通常不反对这些事情,我只是绕过它们:
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这么做。
https://stackoverflow.com/questions/11075219
复制相似问题