我在我的例子有一個問題關於sapply
在R.我使用它留一交叉驗證在交叉驗證使用sapply的
##' 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)
一樣?
謝謝您的幫助
檢查:HTTP://計算器。com/questions/3505701/r-grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggrega for a comprehensive overview and this:http://stackoverflow.com/questions/ 17490297/apply-different-functions-to-different-elements-of-vector-in-r查看如何使用具有多個參數的多個函數。 –
@ Ferdinand.kraft'mapply'有一個特定的用法,它與此處的用法不同,您希望將函數用作參數。 'mapply'和'sapply'都有用處,但我不明白'mapply'在這種情況下是如何應用的? –
@GavinSimpson,回答OP的第一個問題,可以使用'mapply(function(f,x)f(x),list(FUN1,FUN2),list(X1,X2))'。 –