【问题标题】:R: For loop is only executed onceR:for循环只执行一次
【发布时间】:2016-02-19 21:21:03
【问题描述】:

为什么下面的代码只运行一次?

  for ( i in length( which( rowSums( m ) != 1 ) ) ) {
      m[which( rowSums( m ) != 1 )[i], ncol( m )] <- 1
      print(i)
  }

m 是在每行之和不能超过 1 的条件下,包含 0 到 1 之间的值的矩阵。

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    应该是1:length( which( rowSums( m ) != 1 ))

    您想在循环中迭代一个向量。

    【讨论】:

    • 最好使用seq_lenseq_along 函数而不是1:length(,因为如果长度恰好为0怎么办?
    • 谢谢,我错过了。但是好像还是有问题,因为只有最后一个值变成了1,其他的值都和之前一样。
    • @GregSnow,你的观点很有道理。如果长度为零,它将为seq_len 引发错误,但不会为1:length( 引发错误,所以我想这取决于OP。
    • @JimBoy,试着打印矢量图看看里面有什么