2016-11-08 4 views
3
> v <- c(1,2,NA,5) 
> is.na(v) 
[1] FALSE FALSE TRUE FALSE 
> !is.na(v) 
[1] TRUE TRUE FALSE TRUE 
> 
> !is.na(v) %>% all() 
[1] TRUE 
> all(!is.na(v)) 
[1] FALSE 
> (!is.na(v)) %>% all() 
[1] FALSE 

В отсутствии круглых скобок, %>% применяет все() к is.na(v), а затем применять ! оператора. Почему у этого есть такой порядок работы, и для каких других функций/операторов я должен утомлять это?противоречивых результатов при использовании magrittr и оператора отрицания

ответ

2

magrittr предоставляет set of operators, которые лучше работают с его цепью. Таким образом, вы можете использовать

not(is.na(v)) %>% all() 

консультациям

... Особое внимание рекомендуется при использовании операторов, не magrittr в трубе цепи (+, -, $ и т.д.), поскольку приоритет оператора будет влиять на оценку цепи. В общем случае рекомендуется использовать псевдонимы, предоставленные magrittr.

Смежные вопросы