Чтобы указать аргументы в функции, созданной в args
-аргументе rlang::new_function
, я ищу способ создания пустых списков.Затем они могут быть переданы в new_function
и возвращать функции с предопределенными аргументами.
library(rlang)
create_empty_list <- function(arg_names_chr) {
# input lenght should be variable, so probably !!! should be used
}
create_empty_list(arg_names_chr = c("arg1", "arg2"))
#> NULL
# desired output
args_specified <- exprs(arg1=, arg2=)
args_specified
#> $arg1
#>
#>
#> $arg2
# use with new_function()
new_function(
args_specified,
expr(print("hello world")),
caller_env()
)
#> function (arg1, arg2)
#> print("hello world")
Что я пробовал до сих пор:
c("arg1", "arg2") %>%
map(parse_expr) %>%
exprs(!!!arg_names_chr, .named = TRUE)
#> $arg1
#> arg1
#>
#> $arg2
#> arg2
#>
#> # the contents of the list should be empty though...
Я полагаю, используя unquote-splice (!!!
) крайне важно сохранить гибкость входной длины, но я не мог собрать ее вместе с пустыми списками, необходимыми для args
-части new_function
пока ...