【问题标题】:use of pipe operator "%>%" using :: in R在 R 中使用 :: 使用管道运算符“%>%”
【发布时间】:2018-05-31 20:55:10
【问题描述】:

我正在构建一个 R 包,并且我正在大量使用管道运算符 %>%。我正在徘徊如何使用 :: 运算符从 purrr 包中调用它。我试过purrr::%>%,但出现错误。

感谢任何关于此的指南。

P.D:我应该从 magrittr 而不是 purrr 调用管道操作员吗?

【问题讨论】:

  • purr::`%>%` 应该可以解决问题。为什么不直接导入函数?
  • 这可能会有所帮助:stackoverflow.com/questions/27947344/…
  • 您是否有理由要使用来自purrr 而不是来自magrittrdplyr%>%
  • iris purrr::%>% summary() 不起作用
  • 您可以只从magrittr 导入管道。我正要发布与@divibisan 相同的链接,但那里有关于进口的讨论

标签: r pipe


【解决方案1】:

如果您希望您的用户能够访问它,最好的方法是从 magrittr 导入它并重新导出它。

仅在您的包内部使用它,这可能有效:

`%>%` <- purrr::`%>%`

检查:

iris %>% summary
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  

您不能在表达式中直接使用purrr::`%&gt;%`,因为运算符需要在语法上公开为二元运算符,即%&gt;%(无限定)。

【讨论】:

    【解决方案2】:

    从 R 版本 4.1.0 开始,现在有一个基本的 R 管道运算符:|&gt;

    iris |>
      summary()
    
      Sepal.Length    Sepal.Width     Petal.Length    Petal.Width          Species  
     Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   setosa    :50  
     1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   versicolor:50  
     Median :5.800   Median :3.000   Median :4.350   Median :1.300   virginica :50  
     Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199                  
     3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                  
     Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500 
    

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 2020-09-13
      • 2022-06-29
      • 2019-11-20
      • 2015-08-16
      • 1970-01-01
      相关资源
      最近更新 更多