如何使用 %>% 运算符的逻辑函数 (dplyr)

How to use logical functions with %>% operator (dplyr)

我想知道如何将逻辑(例如 whichanyall)函数与 R 中 dplyr 包中的 %>% 运算符一起使用. 我有一个值向量

aaa <- sample(1:5, 10, replace = TRUE)

我想找出其中哪些等于4。当我尝试这个时:

aaa == 4 %>% which(.)

我收到以下错误:

Error in which(.) : argument to 'which' is not logical

其他需要逻辑向量作为参数的函数也是如此,例如allany

aaa == 4 %>% any

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

Warning message: In any(.) : coercing argument of type 'double' to logical

我认为这只是一个运算符优先级问题。 %>% 运算符的优先级低于 == 等其他运算符,因此您实际使用 aaa == 4 %>% which 所做的是将 4 传递给 which 函数。 ..

(aaa == 4) %>% which

似乎工作得很好......

这种对 %>% 的使用似乎有点 odd/unnecessary,但也许这只是因为您已将它从工作流中分离出来以创建可重现的示例。也许你可以多说一下上下文?

用括号括住逻辑运算。

aaa <- sample(1:5, 10, replace = TRUE)
(aaa == 4) %>% which(.)
[1]  7  9 10
(aaa == 4) %>% which()
[1]  7  9 10
(aaa == 4) %>% any()
[1] TRUE