我有一个看似简单的问题,但我似乎无法找到一个好的解决方案。
我有一个逻辑向量,如下所示:
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<-"