使逻辑向量中的“真”值唯一

Jad*_*ace 3 r

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

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

vector = c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)
Run Code Online (Sandbox Code Playgroud)

我希望该向量只包含一个 TRUE 值。所以其中之一需要变成 FALSE。我不想手动完成,因为这是循环的一部分。通常,在循环中生成的逻辑向量将只包含一个 TRUE 值。有时它会生成两个或更多,如果发生这种情况,我想“删除”其他 TRUE 值。

我试过这个:

if(length(which(vector)) > 1) {
    for(j in 1:(length(which(vector)) - 1)) {
      which(vector)[j] <- FALSE
    }
  }
Run Code Online (Sandbox Code Playgroud)

但后来我收到一个错误: Error in which(vector) <- '*vtmp*' : could not find function "which<-"

akr*_*run 7

这是一个选项

vector & cumsum(vector) <2
Run Code Online (Sandbox Code Playgroud)