从列表中提取函数

凯马斯

我在将功能从功能列表中拉出时遇到麻烦。并且必须使用[[1]]运算符。见下文:

library(tibble)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

fns = tibble(fn_name = c('plus', 'multiply'),
             fn = list(function(x,y) x + y,
                       function(x,y) x * y))


my_x = 2
my_y = 3
my_fn_name = 'plus'

my_fn = fns %>% 
  filter(fn_name == my_fn_name) %>% 
  pull(fn)

my_fn[[1]](my_x, my_y)
#> [1] 5

reprex软件包(v0.3.0)创建于2020-12-09

有没有一种更优雅的方式来执行此操作而无需致电my_fn[[1]]我不认为函数可以是向量,这就是为什么我不能像应用pull原子向量那样对待它的原因。

艾伦·卡梅伦

也许这个?

fns %>% 
  filter(fn_name == my_fn_name) %>% 
  unlist() %>%
  purrr::pluck("fn")

#> function(x,y) x + y
#> <environment: 0x000001cfdcd6d4f8>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章