【问题标题】:How do I formulate a for in loop in R where I may want to loop zero times?如何在 R 中制定一个 for in 循环,我可能想循环零次?
【发布时间】:2012-06-19 02:32:51
【问题描述】:

n是R中向量v的长度时,我想循环从1:n开始的一系列数字。通常,我会使用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"))
}

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

【问题讨论】:

    标签: r for-loop idioms


    【解决方案1】:

    最好使用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]))
    

    【讨论】:

    • 谢谢,这正是我所追求的 :)
    • 另外,seq_len (0) 给出了一个长度为 0 的向量(如果你有一个变量来保存限制,而不是一个要循环的向量)。
    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 2021-01-25
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    相关资源
    最近更新 更多