代码之家  ›  专栏  ›  技术社区  ›  EDennnis

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

  •  0
  • EDennnis  · 技术社区  · 8 年前

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

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

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

    非常感谢

    2 回复  |  直到 8 年前
        1
  •  5
  •   MrFlick    8 年前

    您有一个运算符优先级问题。它试图从做开始

    0.15 %>% 3.8416
    

    这没有道理。您需要将所有计算分组在一个代码块中

    0.15 %>% {3.8416 * (.*(1-.))/(0.03^2)}
    
        2
  •  2
  •   moodymudskipper    8 年前

    所有这些都是等效的,您需要 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)}
    
    推荐文章