【问题标题】:How to iterate over 1 <= i < j <= n elements in R?如何迭代 R 中的 1 <= i < j <= n 元素?
【发布时间】:2021-07-04 06:06:55
【问题描述】:

所以我想在矩阵的上三角部分做一个 for 循环,所以我只想要元素 1

for(i in 1:n-1) {
    for(j in i+1:n) {
        ...
    } 
}

但是这些 for 循环不是遍历 1

我是 R 新手,所以我不明白发生了什么。有人可以给我一个提示如何正确地做到这一点吗? 谢谢。

【问题讨论】:

  • 你检查过 baseR upper.tri() 函数了吗?
  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example
  • 您在操作顺序方面犯了一个常见错误。设置n &lt;- 5 并使用控制台将1:n-11:(n -1) 进行比较(+ 版本也是如此)。

标签: r for-loop nested-loops


【解决方案1】:
for(i in seq(1, n - 1)) {
  for(j in seq(i + 1, n)) {
     ...
  } 
}

或者

for(i in 1:(n - 1)) {
  for(j in (i + 1):n) {
     ...
  } 
}

问题在于 R 将 i+1:n 理解为 i + (1:n)

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多