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

时间:2015-06-08 14:20:22

标签: r logic dplyr which

我想知道如何使用来自which包中的any运算符的逻辑(例如all%>%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

2 个答案:

答案 0 :(得分:9)

我认为这只是运营商优先问题。 %>%运算符的优先级低于==等其他运算符,因此您aaa == 4 %>% which实际执行的操作是将4传递给which功能......

(aaa == 4) %>% which

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

%>%的使用似乎有点奇怪/不必要,但也许这只是因为您已将其与工作流程隔离,以便创建可重现的示例。也许你可以多说一点上下文?

答案 1 :(得分:4)

围绕逻辑操作使用括号。

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