当1:n
是R中向量n
的长度时,我想循环来自v
的一系列数字。通常,我会使用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"))
}
是的,我知道更好地进行矢量化,但有些情况下无法进行矢量化或者需要进行额外的工作以至于更难以阅读代码。
答案 0 :(得分:12)
最好使用seq_along
:
> v <- letters[1:3]
> for (i in seq_along(v)) print(c(i, v[i]))
[1] "1" "a"
[1] "2" "b"
[1] "3" "c"
>
> v <- numeric(0)
> for (i in seq_along(v)) print(c(i, v[i]))