【发布时间】:2020-01-17 17:12:25
【问题描述】:
我有一个看似简单的问题,但我似乎找不到一个好的解决方案。
我有一个逻辑向量,像这样:
vector = c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)
我希望该向量仅包含一个 TRUE 值。所以其中一个需要变成 FALSE。我不想手动操作,因为这是循环的一部分。通常,在循环中生成的逻辑向量将只包含一个 TRUE 值。有时它会生成两个或更多,如果发生这种情况,我想“删除”其他 TRUE 值。
我试过这个:
if(length(which(vector)) > 1) {
for(j in 1:(length(which(vector)) - 1)) {
which(vector)[j] <- FALSE
}
}
然后我得到一个错误:Error in which(vector) <- '*vtmp*' : could not find function "which<-"
【问题讨论】:
-
replace(vector, which(vector)[-1], FALSE) -
或
replace(vector, -which.max(vector), FALSE)
标签: r