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

问题描述:

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

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

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

非常感谢

+1

管道是来自'magrittr'软件包,而不是'dplyr'软件包。我建议看看[自述文件](https://github.com/tidyverse/magrittr)。 – Gregor

+1

但是,使用管道来使事情更清晰,更具可读性。这就是它的目的。你的第一个例子使事情变得更加难以阅读。 – Gregor

+0

感谢您澄清管道来自哪个包装,我确实同意Gregor应该始终使用管道使事情更容易阅读 – EDennnis

您有一个操作符优先级问题。它试图开始做

0.15 %>% 3.8416 

这是没有意义的。你需要将所有的计算中一个代码块

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

这是我一直在寻找的。感谢您的答复。 – EDennnis

所有这些都是等价的,你需要为magrittr第一个,dplyr是足够未来2:

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)} 
+1

感谢您在我们希望通过数据或计算命令(即分割,乘法等)时展示管道命令的灵活性来进行数值分析。 – EDennnis