我想知道如何使用来自which
包中的any
运算符的逻辑(例如all
,%>%
,dplyr
)函数。有一个值向量
aaa <- sample(1:5, 10, replace = TRUE)
我想知道哪些等于4
。当我尝试这个时:
aaa == 4 %>% which(.)
我收到以下错误:
Error in which(.) : argument to 'which' is not logical
其他需要逻辑向量作为参数的函数也是如此,例如all
或any
。
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
答案 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