2015-06-08 27 views
9

Zastanawiałem się, jak korzystać z logicznym (np which, any, all) funkcje z %>% operatora z dplyr opakowaniu w R. Mam wektor wartościJak używać funkcji logicznych z%>% operatora (dplyr)

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

Chciałbym dowiedzieć się, które z nich są równe 4. Kiedy próbuję to:

aaa == 4 %>% which(.)

pojawia się następujący błąd:

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

To samo z innymi funkcjami, które wymagają logicznego wektor jako argument, takich jak all lub 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

Jaka jest twoja wersja dplyra? –

+2

'%>%' nie jest operatorem 'dplyr'. –

+1

Tak, ale jest importowany przez 'dplyr' ... –

Odpowiedz

9

myślę, że to tylko kwestia pierwszeństwa operator. Operator %>% ma niższy priorytet niż innych operatorów, takich jak ==, więc co ty właściwie robisz z aaa == 4 %>% which jest przechodzącej 4 do funkcji which ...

(aaa == 4) %>% which 

wydaje się działać dobrze ...

To użycie numeru %>% wydaje się być trochę dziwne/niepotrzebne, ale być może dlatego, że wyizolowałeś je ze swojego przepływu pracy, aby utworzyć powtarzalny przykład. Może mógłbyś powiedzieć trochę więcej o kontekście?

+0

Jaka jest twoja wersja dplyr? –

+0

przy użyciu wersji 0.4.1 –

4

Użyj nawiasów wokół operacji logicznych.

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