使用 dplyr 管道命令进行数值计算

Numeric calculations using dplyr piping commands

是否可以使用 dplyr 包中的管道进行数值计算?一个简单的例子是:

    0.15 %>% 3.8416 * (.*(1-.))/(0.03^2)  #does not work
    seq(1,10,1) %>% log(.) %>% .^2        #works

了解更多关于管道的工作原理以及何时可以和不可以使用的信息。我真的很喜欢使用管道功能,并想找到一种方法将其用于这些类型的数值计算。

非常感谢

您遇到了运算符优先级问题。它试图从

开始
0.15 %>% 3.8416

这没有意义。您需要将所有计算分组到一个代码块中

0.15 %>% {3.8416 * (.*(1-.))/(0.03^2)}

所有这些都是等价的,第一个需要 magrittr,第二个 dplyr 就足够了:

library(magrittr)
0.15 %>% multiply_by(subtract(1,.)) %>% multiply_by(3.8416) %>% divide_by(0.03^2)
0.15 %>% `*`(`-`(1,.)) %>% `*`(3.8416) %>% `/`(0.03^2)
0.15 %>% {3.8416 * (.*(1-.))/(0.03^2)}