我有一个关于sapplyR 的问题。在我的示例中,我将其用于留一交叉验证
##' Calculates the LOO CV score for given data and regression prediction function
##'
##' @param reg.data: regression data; data.frame with columns 'x', 'y'
##' @param reg.fcn: regr.prediction function; arguments:
##' reg.x: regression x-values
##' reg.y: regression y-values
##' x: x-value(s) of evaluation point(s)
##' value: prediction at point(s) x
##' @return LOOCV score
loocv <- function(reg.data, reg.fcn)
{
## Help function to calculate leave-one-out regression values
loo.reg.value <- function(i, reg.data, reg.fcn)
return(reg.fcn(reg.data$x[-i],reg.data$y[-i], reg.data$x[i]))
## Calculate LOO regression values using the help function above
n <- nrow(reg.data)
loo.values <- sapply(seq(1,n), loo.reg.value, reg.data, reg.fcn)
## Calculate and return MSE
return(???)
}
我的问题sapply如下:
- 我可以使用多个参数和函数吗,即
sapply(X1,FUN1,X2,FUN2,..)和X1分别是函数和X2函数的函数参数。FUN1FUN2 - 在上面的代码中,我应用
1:n到了函数loo.reg.value。但是,这个函数有多个参数,实际上是 3 个:整数i、回归数据reg.data和回归函数reg.fcn。如果 sapply 中的函数有多个参数,并且我X只涵盖一个参数,那么 sapply 是否将其用作“第一个参数”?所以它会和sapply(c(1:n,reg.data,reg.fcn),loo.reg.value, reg.data, reg.fcn)?
感谢您的帮助