两者之间的另一个区别是. 的管道输入值可以用作magrittr 管道中的占位符
c("dogs", "cats", "rats") %>% grepl("at", .)
#[1] FALSE TRUE TRUE
但这对于 R 的原生管道是不可能的。
c("dogs", "cats", "rats") |> grepl("at", .)
grepl(c("dogs", "cats", "rats"), "at", .) 中的错误:对象 '.'没找到
这里有不同的引用方式-
- 写一个单独的函数-
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 乙。使用 new 匿名函数语法
c("dogs", "cats", "rats") |> {\(x) grepl("at", x)}()
- 按名称指定第一个参数。这依赖于本机管道管道进入第一个 unnamed 参数的事实,因此如果您为第一个参数提供名称,它会“溢出”到第二个参数(如果您指定多个参数,依此类推按名称参数)
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