R用于超出边界的循环终止

时间:2014-05-01 20:54:53

标签: r for-loop nested-loops

我想在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&lt; = length(x)但是有没有办法更优雅地做到这一点?例如,在C ++中,我相信第二个循环永远不会执行......

感谢您的帮助!

2 个答案:

答案 0 :(得分: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] ) ...

答案 1 :(得分:1)

通常的建议是使用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)
  }
}