我的问题是magrittr包装的管道操作员在哪里按操作%>%顺序排列?
我有一个与以下问题类似的问题:
set.seed(10)
df <- data.frame(a=rnorm(3),b=rnorm(3),c=rnorm(3))
df/rowSums(df) %>% round(.,3)
Run Code Online (Sandbox Code Playgroud)
这导致以下非圆形数字:
Run Code Online (Sandbox Code Playgroud)a b c 1 -0.0121966 0.119878 0.8922125
要获得圆形数字,我需要放在df/rowSums(df)括号之间.
我试验了+,-,*,/并^从结果我发现操作的顺序如下:
这是对的还是我对管道操作员的理解有问题?
您正在寻找的帮助页面是?Syntax.(不要因为找不到这个而感觉不好,我在搜索关键字上花了六个猜测.)我将在这里引用它的整个运算符优先级表:
定义了以下一元和二元运算符.它们列在优先级组中,从最高到最低.
Run Code Online (Sandbox Code Playgroud)‘:: :::’ access variables in a namespace ‘$ @’ component / slot extraction ‘[ [[’ indexing ‘^’ exponentiation (right to left) ‘- +’ unary minus and plus ‘:’ sequence operator ‘%any%’ special operators (including ‘%%’ and ‘%/%’) ‘* /’ multiply, divide ‘+ -’ (binary) add, subtract ‘< > <= >= == !=’ ordering and comparison ‘!’ negation ‘& &&’ and ‘| ||’ or ‘~’ as in formulae ‘-> ->>’ rightwards assignment ‘<- <<-’ assignment (right to left) ‘=’ assignment (right to left) ‘?’ help (unary and binary)
所以magrittr的管道运算符,就像表单中的所有运算符一样%whatever%,确实具有大于乘法和除法的优先级,但是低于取幂,这是由语言规范保证的.
就个人而言,我没有看到这些运营商的价值.为什么不写
round(df/rowSums(df), 3)
Run Code Online (Sandbox Code Playgroud)
哪个有您想要的评估顺序,并且(IMNSHO)也更容易阅读?