在 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)}()
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/