2015-06-08 9 views
9

Ich habe mich gefragt, wie logisch zu verwenden (zB which, any, all) Funktionen mit %>% Betreibern von dplyr Paket in R. habe ich einen Vektor von WertenWie logische Funktionen mit%>% Operator verwenden (dplyr)

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

Ich würde gerne herausfinden, welche von ihnen sind gleich 4. Wenn ich versuche, dies:

aaa == 4 %>% which(.)

ich die folgende Fehlermeldung erhalten:

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

Das gleiches mit anderen Funktionen geht, die als Argument logischen Vektor erfordern, wie all oder 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

Was ist Ihre dplyr-Version? –

+2

'%>%' ist kein 'dplyr'-Operator. –

+1

Ja, aber importiert von 'dplyr' ... –

Antwort

9

Ich denke, es ist nur ein Operator Vorrang Problem. Der %>% Operator hat eine geringere Priorität als andere Operatoren wie ==, so was Sie eigentlich mit aaa == 4 %>% which tun 4 zum which Funktion ist vorbei ...

(aaa == 4) %>% which 

ganz gut zu funktionieren scheint ...

Diese Verwendung von %>% scheint ein wenig seltsam/unnötig, aber vielleicht liegt es nur daran, dass Sie es von Ihrem Workflow isoliert haben, um ein reproduzierbares Beispiel zu erstellen. Vielleicht könntest du etwas mehr über den Zusammenhang sagen?

+0

Was ist deine dplyr-Version? –

+0

mit Version 0.4.1 –

4

Verwenden Sie Klammern um logische Operationen.

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 
Verwandte Themen