El siguiente código es visto comúnmente en lo que cuando se trata de la iteración en los valores del índice de una colección:índice de iteración lenguaje
for (i in 1:length(x)) {
# ...
}
El código se comporta mal cuando la colección está vacío porque 1:length(x)
se convierte en 1:0
que da i
la valores 1
y 0
.
iterate <- function(x) {
for (i in 1:length(x)) {
cat('x[[', i, ']] is', x[[i]], '\n')
}
}
> iterate(c(1,2,3))
x[[ 1 ]] is 1
x[[ 2 ]] is 2
x[[ 3 ]] is 3
> iterate(c())
x[[ 1 ]] is
x[[ 0 ]] is
Recuerdo haber visto un elegante lenguaje para la definición de una secuencia que no tiene elementos cuando x
está vacía, pero no puedo recordarlo. ¿Qué idioma usas?
Perfecto, 'seq_along' era el modismo que vi. – Sim
Pero si no necesita la variable de índice y solo desea recorrer los elementos de algo, una de lapply/sapply/vapply o algo del paquete plyr puede ser más elegante. – Spacedman
@Spacedman Muy cierto y definitivamente es algo que el OP debería tener en cuenta. – Dason