对此有点困惑。我有一个这样的逻辑向量:
logical_vec <- c(TRUE, FALSE)
我感兴趣的是捕获这个逻辑向量的索引,以便我可以子集另一个R对象。例如,如果我对TRUE
元素的位置感兴趣,我想我会使用这个:
which(TRUE, logical_vec)
[1] 1
但是当试图找到哪个索引是FALSE
时,我得到一个integer(0)
错误。
which(FALSE, logical_vec)
integer(0)
是否只返回满足TRUE的条件,或者我在这里做了一些不正确的事情?
也许这就是你想要的?注意,您提供了第二个参数arr.ind
,这不是您想要的。
logical_vec <- c(TRUE, FALSE)
which(logical_vec == TRUE)
#> [1] 1
which(logical_vec == FALSE)
#> [1] 2
由reprex包(v2.0.1)创建于2021-09-06
which
接受'x'的单个参数,通过传递两个参数,它接受第一个参数为'x',默认情况下第二个参数为arr.ind = FALSE
。根据?which
(x,加勒比海盗。ind = FALSE, usnames = TRUE)
,
x—逻辑向量或数组。NAs是允许的,也可以省略(当作FALSE处理)。
which(FALSE)
integer(0)
可能需要连接(c
)来创建单个向量,而不是两个实参
which(c(FALSE, logical_vec))
[1] 2
同样,不需要在逻辑向量上执行==
——默认情况下,which
获取逻辑向量的位置索引,如果我们需要取反,使用!
which(logical_vec)
[1] 1
which(!logical_vec)
[1] 2