使用magrittr和negation运算符时的结果不一致

时间:2016-11-08 14:58:09

标签: r logical-operators magrittr

> 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),然后应用!运算符。为什么它在这里有这样的操作顺序,对于其他功能/操作员我应该对此感到厌倦?

1 个答案:

答案 0 :(得分:2)

magrittr提供了一个set of operators,它的链接效果更好。所以,你可以使用

"Validated_Versions":[{"id":9,"version":{}},{"id":10,"version":{}},{"id":12,"version":{}}]

建议

  

...在管道链中使用非magrittr运算符时,建议特别注意   (+, - ,$等),因为运算符优先级将影响链的计算方式。一般来说是   建议使用magrittr提供的别名。