是否可以使用dplyr包中的管道进行数值计算?一个简单的例子是:
0.15 %>% 3.8416 * (.*(1-.))/(0.03^2) #does not work
seq(1,10,1) %>% log(.) %>% .^2 #works
了解管道如何工作以及何时可以使用和不能使用。我真的很喜欢使用管道功能,并希望找到一种方法将它用于这些类型的数值计算。
非常感谢
答案 0 :(得分:5)
您有运营商优先级问题。它试图从
开始0.15 %>% 3.8416
这没有意义。您需要在代码块中对所有计算进行分组
0.15 %>% {3.8416 * (.*(1-.))/(0.03^2)}
答案 1 :(得分:2)
所有这些都是等效的,第一个你需要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)}