【发布时间】:2021-09-23 12:38:24
【问题描述】:
我正在尝试编写一个函数(在包内),该函数涉及允许用户从特定包中指定要执行的函数并为该函数提供额外的参数。
我可以使用rlang::call2 分两步完成此操作,如下所示:
# `my_pkg` = "foo" (user-input)
# `my_fun` = "bar" (user-input)
# `args` is a named list (user-input)
the_call <- rlang::call2(.fn = my_fun , !!!args , .ns = my_pkg)
base::eval(the_call)
我觉得“正确”的做法是只使用rlang::exec,但rlang::exec 没有.ns 像rlang::call2 那样的参数。相反,它有一个 .env 参数。
如何将函数的包(或命名空间)指定给 rlang::exec? rlang::exec 的 .env 参数似乎不是答案,因为用户应该能够在特定包(已安装)中指定功能,而无需先加载该包。
或者rlang::exec 不是为了这个目的?
【问题讨论】:
-
请问您的两步法有什么问题?
-
什么都没有。但是,
rlang::exec的意义何在?