我在将功能从功能列表中拉出时遇到麻烦。并且必须使用[[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] 删除。
我来说两句