У меня есть вопрос о sapply
in 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)
?
Спасибо за помощь
mapply
имеет особое использование, которое отличается от использования здесь, когда вы хотите применить функцию, которая принимает функцию в качестве аргумента. Иmapply
, иsapply
используются, но я не понимаю, какmapply
применимо в данном случае? - person Gavin Simpson   schedule 23.07.2013mapply(function(f, x) f(x), list(FUN1, FUN2), list(X1, X2))
. - person Ferdinand.kraft   schedule 23.07.2013