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

时间:2017-10-19 18:02:44

标签: r dplyr numeric piping

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

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

了解管道如何工作以及何时可以使用和不能使用。我真的很喜欢使用管道功能,并希望找到一种方法将它用于这些类型的数值计算。

非常感谢

2 个答案:

答案 0 :(得分:5)

您有运营商优先级问题。它试图从

开始
0.15 %>% 3.8416

这没有意义。您需要在代码块中对所有计算进行分组

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

答案 1 :(得分:2)

所有这些都是等效的,第一个你需要magrittrdplyr足以满足下一个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)}