从 purrr::invoke_map 到 rlang::exec(翻译行为)
From purrr::invoke_map to rlang::exec (translate behavior)
我注意到 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))
我注意到 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))