【发布时间】: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 之间的值的矩阵。
【问题讨论】:
为什么下面的代码只运行一次?
for ( i in length( which( rowSums( m ) != 1 ) ) ) {
m[which( rowSums( m ) != 1 )[i], ncol( m )] <- 1
print(i)
}
m 是在每行之和不能超过 1 的条件下,包含 0 到 1 之间的值的矩阵。
【问题讨论】:
应该是1:length( which( rowSums( m ) != 1 ))
您想在循环中迭代一个向量。
【讨论】:
seq_len 或seq_along 函数而不是1:length(,因为如果长度恰好为0怎么办?
seq_len 引发错误,但不会为1:length( 引发错误,所以我想这取决于OP。