gpt4 book ai didi

r - R 的新原生管道 `|>` 和 magrittr 管道 `%>%` 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 04:28:08 25 4
gpt4 key购买 nike

在 R 4.1 中引入了本地管道运算符,它比以前的实现“更精简”。我已经注意到原生 |> 之间的一个区别。和 magrittr 管 %>% ,即2 %>% sqrt有效,但 2 |> sqrt没有而且必须写成 2 |> sqrt() .使用新的管道操作符时是否有更多的差异和陷阱需要注意?

最佳答案

它们之间的另一个区别是管道输入值 .可用作 magrittr 中的占位符的管道

c("dogs", "cats", "rats") %>% grepl("at", .)
#[1] FALSE TRUE TRUE
但这对于 R 的 native 管道是不可能的。
c("dogs", "cats", "rats") |> grepl("at", .)

Error in grepl(c("dogs", "cats", "rats"), "at", .) : object '.' not found


以下是引用它们的不同方法 -
  • 编写一个单独的函数 -
  • find_at = function(x) grepl("at", x)
    c("dogs", "cats", "rats") |> find_at()
    #[1] FALSE TRUE TRUE
    2个。使用匿名函数 -
    c("dogs", "cats", "rats") |> {function(x) grepl("at", x)}()
    2 乙。使用新的匿名函数语法
    c("dogs", "cats", "rats") |> {\(x) grepl("at", x)}()
  • 按名称指定第一个参数。这依赖于 native 管道管道进入第一个未命名参数的事实,因此如果您为第一个参数提供名称,它会“溢出”到第二个参数(如果您按名称指定多个参数,依此类推)

  • c("dogs", "cats", "rats") |> grepl(pattern="at")
    #> [1] FALSE TRUE TRUE
    示例 1 和 2 取自 - https://www.jumpingrivers.com/blog/new-features-r410-pipe-anonymous-functions/
    示例 3 取自 https://mobile.twitter.com/rlangtip/status/1409904500157161477

    关于r - R 的新原生管道 `|>` 和 magrittr 管道 `%>%` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67633022/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com