【问题标题】:R for loop termination on out of boundsR for 越界终止循环
【发布时间】:2014-05-01 20:54:53
【问题描述】:

我想在 R 中做如下嵌套的 for 循环结构:

x<- c(a,b,c,d,e)
for(i in 1:length(x)){
  for(j in (i+1):length(x)){
     do something with (x, j)
  }
}

但是,最终发生的情况是,在某一点 j=6(因为 j 从 i+1 开始),循环仍然尝试执行并导致越界。

当然,我总是可以在运行命令之前放入 if 语句来检查 j

感谢您的帮助!

【问题讨论】:

  • 还是让我从 1 转到 j - 1?
  • @rawr:你的意思是我从 1 到 length(x)-1?

标签: r for-loop nested-loops


【解决方案1】:

试试这个:

for( j in seq(i + 1, length = length(x) - i) ) ...

for( j in i + seq_len(length(x) - i) ) ...

for( j in seq(i, length(x))[-1] ) ...

【讨论】:

    【解决方案2】:

    通常的建议是使用 seq_along:

    x<- c(a,b,c,d,e)
    for(i in seq_along(x)){
      for(j in seq_along( x[ -(1:i) ] ){
         do something with (x, i, j)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2018-12-18
      • 1970-01-01
      • 2021-05-26
      • 2017-05-12
      • 1970-01-01
      相关资源
      最近更新 更多