是否可以使用dplyr包中的管道進行數值計算?一個簡單的例子是:使用dplyr管道命令進行數值計算
0.15 %>% 3.8416 * (.*(1-.))/(0.03^2) #does not work
seq(1,10,1) %>% log(.) %>% .^2 #works
追加了解更多關於管道工作原理以及何時可以和不能使用的信息。我非常喜歡使用管道功能,並希望找到一種方法將其用於這些類型的數字計算。
非常感謝
是否可以使用dplyr包中的管道進行數值計算?一個簡單的例子是:使用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)}
這是我一直在尋找的。感謝您的答覆。 – 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)}
感謝您在我們希望通過數據或計算命令(即分割,乘法等)時展示管道命令的靈活性來進行數值分析。 – EDennnis
管道是來自'magrittr'軟件包,而不是'dplyr'軟件包。我建議看看[自述文件](https://github.com/tidyverse/magrittr)。 – Gregor
但是,使用管道來使事情更清晰,更具可讀性。這就是它的目的。你的第一個例子使事情變得更加難以閱讀。 – Gregor
感謝您澄清管道來自哪個包裝,我確實同意Gregor應該始終使用管道使事情更容易閱讀 – EDennnis