R 制作';正确';逻辑向量中的值唯一

R 制作';正确';逻辑向量中的值唯一,r,R,我有一个看似简单的问题,但似乎找不到解决它的好办法 我有一个逻辑向量,如下所示: vector = c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE) 我希望这个向量只包含一个真值。所以其中一个需要变成假的。我不想手动执行,因为这是循环的一部分。通常,在循环中,生成的逻辑向量只包含一个真值。有时它会生成两个或多个值,如果发生这种情况,我希望“删除”其他真值 我试过这个: if(l

我有一个看似简单的问题,但似乎找不到解决它的好办法

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

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

我试过这个:

if(length(which(vector)) > 1) {
    for(j in 1:(length(which(vector)) - 1)) {
      which(vector)[j] <- FALSE
    }
  }
if(长度(哪个(向量))>1){
对于(j in 1:(长度(哪个(向量))-1)){
哪个(向量)[j]这里有一个选项

vector & cumsum(vector) <2

vector&cumsum(vector)您可以通过以下方法解决问题:

vector[vector == TRUE][2:length(vector[vector == TRUE])] = FALSE
在本代码中,除第一个代码外,所有TRUE均指定为FALSE。在本代码中,除最后一个代码外,所有TRUE均指定为FALSE:

vector[vector == TRUE][1:(length(vector[vector == TRUE])-1)] = FALSE

保持第一个真值并使其余值为假的简单方法:

s=0
对于(1中的i:length(vector)){
如果(s==1){
向量[i]=FALSE
} 
如果(向量[i])s=1
}
哪个.max(x)
将为您提供第一个
TRUE
值的索引,您可以将
FALSE
分配给其他值

x=c(假,假,假,假,假,真,假,假,假,假,真,假,假)
x[-which.max(x)][1]假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假
替换(向量,哪个向量[-1],FALSE)
替换(向量,-which.max(向量),FALSE)