我有一个关于sapply
R 的问题。在我的示例中,我将其用于留一交叉验证
##' 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
函数的函数参数。FUN1
FUN2
- 在上面的代码中,我应用
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)
?
感谢您的帮助