[我注意到purrr::invoke_map()
和他的亲戚已退休,而赞成rlang::exec()
与purrr::map
,as documentation specified结合使用。
[在某些情况下,当您想突出显示一组不同的参数以通过函数时,purrr::invoke_map
表示得非常好,例如:
# create different settings of arguments in a list
args_list <- list(set1 = list(n = 5, mean = 0, sd = 1),
set2 = list(n = 5, mean = 10, sd = 2))
# pass each setting by the function
invoke_map(rnorm, args_list)
在文档中,您可以使用exec
+ map2
模仿以下行为找到以下内容:
# Before:
invoke_map(fns, list(args))
invoke_map(fns, list(args1, args2))
# After:
map(fns, exec, !!!args)
map2(fns, list(args1, args2), function(fn, args) exec(fn, !!!args))
我们如何使用exec
+ map2
翻译以前描述的模式?
使用map
,当您必须将相同功能应用于args_list
时。
library(purrr)
args_list <- list(set1 = list(n = 5, mean = 0, sd = 1),
set2 = list(n = 5, mean = 10, sd = 2))
map(args_list, ~exec(rnorm, !!!.x))
想要应用其他功能时使用map2
args_list <- list(set1 = list(n = 5, mean = 0, sd = 1),
set2 = list(n = 3, min = 1, max = 2))
map2(args_list, list(rnorm, runif), ~exec(.y, !!!.x))