使用 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)}
是否可以使用 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)}