Код, написанный с использованием lapply и друзей, обычно проще на глазах и больше Rish, чем на петлях. Я обожаю себя так же, как и следующий парень, но как мне отлаживать его, когда что-то идет не так? Например:
> ## 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
Если бы я использовал цикл 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
Но я бы знал, где произошла ошибка:
> i
[1] 2
Что мне делать при использовании lapply/sapply?