R -当使用磁力和负运算符时,结果不一致


> 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提供的别名

相关内容

  • 没有找到相关文章

最新更新