Как мне сформулировать цикл for in в R, где я могу зацикливаться ноль раз?

Я хочу перебрать диапазон чисел из 1:n, когда n- длина вектора vв R. Обычно я бы использовал синтаксис for (i in 1:length(v)), но это не работает, когда n == 0.

Как идиоматично сделать этот цикл? На данный момент я делаю следующее, но это кажется немного некрасивым:

# This is in my standard library
rng <- function(n)seq(from=1, to=n, length.out=n)

# Now when I come to the for loop:
for(i in rng(length(v))){
   print(paste("I ate", i, "kg of brocolli today"))
}

И да, я знаю, что лучше векторизовать, но бывают ситуации, когда векторизация невозможна или потребует столько дополнительной работы, что это намного сложнее чтобы прочитать код.

6
задан fmark 19 June 2012 в 02:32
поделиться