6

我想循环从 开始的一系列数字1:n,什么时候n是 R 中向量的长度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"))
}

是的,我知道矢量化更好,但是在某些情况下矢量化是不可能的,或者需要大量额外的工作,以至于阅读代码变得更加困难。

4

1 回答 1

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]))
于 2012-06-19T02:40:01.640 回答