[Hadley a souligné dans un commentaire.]
Lors de l'utilisation d'une séquence comme un indice de l'itération, il est préférable d'utiliser l' seq_along()
de la fonction plutôt que quelque chose comme 1:length(x)
.
Ici, j'ai créer un vecteur et les deux approches de retour la même chose:
> x <- 1:10
> 1:length(x)
[1] 1 2 3 4 5 6 7 8 9 10
> seq_along(x)
[1] 1 2 3 4 5 6 7 8 9 10
Maintenant, faire le vecteur NULL
:
> x <- NULL
> seq_along(x) # returns an empty integer; good behavior
integer(0)
> 1:length(x) # wraps around and returns a sequence; this is bad
[1] 1 0
Cela peut entraîner une certaine confusion dans une boucle:
> for(i in 1:length(x)) print(i)
[1] 1
[1] 0
> for(i in seq_along(x)) print(i)
>