Идиома итерации индекса
следующий код обычно рассматривается на SO, когда дело доходит до итерации значений индекса коллекции:
for (i in 1:length(x)) {
# ...
}
код плохо себя ведет, когда коллекция пуста, потому что 1:length(x)
становится 1:0
что дает i
значения 1
и 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
Я помню, что видел элегантную идиому для определения последовательности, которая не имеет элементов, когда x
пуст, но я не могу вспомнить. Какую идиому вы используете?
1 ответов
или seq
или seq_along
дайте вам что-то более разумное, когда ваш объект интереса пуст.
> x <- NULL
> seq(x)
integer(0)
> seq_along(x)
integer(0)
> x <- rnorm(5)
> seq(x)
[1] 1 2 3 4 5
> seq_along(x)
[1] 1 2 3 4 5