Usando apply com um argumento de função diferente para a avaliação de cada elemento
Digamos que eu tenho uma matriz, esteira.
mat <- matrix(1:5, nrow = 10, ncol = 3, byrow = TRUE)
E eu tenho algum tipo de função que quero aplicar, neste caso por coluna.
getRMSE <- function(true, est) {
sqrt(mean((true - est)^2))
}
(Esta função é apenas o exemplo mais recente, mas eu tive esse mesmo enigma exatamente pelo menos mais cinco vezes.)
Se você deseja aplicar uma função sobre uma matriz, use apply. Mas e se você quiser aplicar uma função sobre uma matriz com valores diferentes para 'x' na aplicação?
Nesse caso, o objetivo seria que apply realizasse o equivalente a isso:
getRMSE(mat[,1], 1)
getRMSE(mat[,2], 2)
getRMSE(mat[,3], 3)
Mas sempre encontro problemas ao fornecer um vetor como argumento suplementar para a função. Obviamente
apply(mat, 2, getRMSE, c(1,2,3))
não vai funcionar, porque também reciclará os números nas colunas. Mas
apply(mat, 2, getRMSE, rep(c(1,2,3), 25))
também não funciona, o que eu pensei que tinha pelo menos uma chance.