例如,我想将匿名函数应用于 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)
我想知道是否有比后两个更好的选择。
您可以直接使用匿名函数,将其括在括号中:
tb %>% (function(x) {x[1,1] + x[2, 1]})
# vec1
# 1 3
Run Code Online (Sandbox Code Playgroud)
从 R 版本 4.1 开始,R 现在为管道运算符 ( ) 和匿名函数提供了内置语法|>。在管道链中调用匿名函数可以这样完成:
mtcars |> (\(.x) plot(.x$hp, .x$mpg))()
Run Code Online (Sandbox Code Playgroud)