El código escrito usando lapply y friends suele ser más fácil para los ojos y más Rish que los bucles. Me encantan tanto como el siguiente tipo, pero ¿cómo puedo depurarlo cuando las cosas van mal? Por ejemplo:Debugging lapply/sapply calls
> ## a list composed of numeric elements
> x <- as.list(-2:2)
> ## turn one of the elements into characters
> x[[2]] <- "what?!?"
>
> ## using sapply
> sapply(x, function(x) 1/x)
Error in 1/x : non-numeric argument to binary operator
Si hubiera usado un bucle for:
> y <- rep(NA, length(x))
> for (i in 1:length(x)) {
+ y[i] <- 1/x[[i]]
+ }
Error in 1/x[[i]] : non-numeric argument to binary operator
Pero me gustaría saber dónde ocurrió el error:
> i
[1] 2
¿Qué debo hacer cuando se utiliza lapply/sapply?
O simplemente 'blah <-sapply (x, mfn)'. Y no debería necesitar tanto 'debug' como recover' – hadley