> 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)
应用all(),然后再应用!
算子。为什么这里有这样的操作顺序,对于哪些其他函数/操作符我应该感到厌倦?
magrittr提供了一组操作符,可以更好地使用它的链接。因此,你可以使用
not(is.na(v)) %>% all()
的建议是
…在管道链中使用非磁力运算符时,需要特别注意(+, -, $等),作为操作符优先级将影响链的计算方式。一般来说是这样的建议使用magrittr提供的别名