【问题标题】:Nested for loops in R such that index of the 2nd = index of the 1st + 1在 R 中嵌套 for 循环,使得第 2 个索引 = 第 1 个索引 + 1
【发布时间】:2021-11-24 17:50:37
【问题描述】:

我正在尝试编写一个嵌套的 for 循环(i 索引第一个循环,j 索引第二个循环),以便 j 从 i + 1 开始并以特定值(向量的最后一个值)结束。特别是:

vettore = 1 : 10

for (i in vettore) {
  j = i + 1
  for (j in vettore) {
    cat("i: ", i)
    cat("j: ", j, "\n")
    }
}

我需要以下行为。

第一个循环的第 1 次迭代:i = 1,j = 2 直到 j = 10

第一个循环的第 2 次迭代:i = 2,j = 3 直到 j = 10

等等。我该怎么做?

【问题讨论】:

    标签: r for-loop nested-loops


    【解决方案1】:

    第二个循环应该从j 开始,但在您的代码中,它仍然针对vettore 的每个值运行。另外最好使用seq_along1:length(vettore) 而不是for (i in vettore)

    这是一种解决方法。

    vettore = 1 : 10
    
    for (i in seq_along(vettore)) {
      j = i + 1
      for (k in j:length(vettore)) {
        cat("i: ", i)
        cat("\tj: ", k, "\n")
      }
    }
    
    #i:  1  j:  2 
    #i:  1  j:  3 
    #i:  1  j:  4 
    #i:  1  j:  5 
    #i:  1  j:  6 
    #i:  1  j:  7 
    #i:  1  j:  8 
    #i:  1  j:  9 
    #i:  1  j:  10 
    #i:  2  j:  3 
    #i:  2  j:  4 
    #i:  2  j:  5 
    #...
    #...
    

    【讨论】:

    • 您好@RonakShah 非常感谢您的有趣回答。您是否使用 seq_along 是因为您想确保 i 的值是一个序列 1 2 3 4?
    • 没错。因此,如果 vettore 更改为 vettore = 11 : 20 seq_along 仍然会给出 1、2、3...。如果您想在循环中使用特定值,您可以使用 vettore[i]
    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多