我有一个看似简单的问题,但我似乎无法找到一个好的解决方案。

我有一个逻辑向量,如下所示:

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<-"

最佳答案

这是一个选项

vector & cumsum(vector) <2

关于r - 使逻辑向量中的 'true' 值唯一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59791968/

10-12 17:05
查看更多