使用管道运算符调用匿名函数

new*_*bie 3 r purrr

例如,我想将匿名函数应用于 tibble 数据

tb <- tibble(vec1 = 1:10, vec=2)
Run Code Online (Sandbox Code Playgroud)

以下代码失败

tb %>% map(function(x) {x[1,1] + x[2, 1]})
Run Code Online (Sandbox Code Playgroud)

但以下作品

tb %>% {map(list(.), function(x) {x[1,1] + x[1,2]})}
tb %>% map_depth(0, function(x) {x[1,1] + x[1,2]})
Run Code Online (Sandbox Code Playgroud)

我想知道是否有比后两个更好的选择。

Gre*_*gor 7

您可以直接使用匿名函数,将其括在括号中:

tb %>% (function(x) {x[1,1] + x[2, 1]})
#   vec1
# 1    3
Run Code Online (Sandbox Code Playgroud)


Pet*_* H. 6

从 R 版本 4.1 开始,R 现在为管道运算符 ( ) 和匿名函数提供了内置语法|>。在管道链中调用匿名函数可以这样完成:

mtcars |> (\(.x) plot(.x$hp, .x$mpg))()
Run Code Online (Sandbox Code Playgroud)