R 获取分区函数的参数值

R 获取分区函数的参数值,r,purrr,rlang,R,Purrr,Rlang,给出以下玩具示例: 库(purrr) foo=函数(x,a)x+a foop=partial(foo,a=runif(1)) 福普 但我想知道是否有更优雅的方式。我认为没有更好的方式来做到这一点partial将..中的所有参数转换为quosures,而不进行任何计算。这意味着您需要对参数求值以获取其值,或者只能获取其表达式。此外,由于quosure是一个rlang特定的对象结构,因此没有比使用tidy_u u eval更好的方法来评估它。也许你已经发现了你能做的最好的事情。如果你只想保存一些击

给出以下玩具示例:

库(purrr)
foo=函数(x,a)x+a
foop=partial(foo,a=runif(1))
福普

但我想知道是否有更优雅的方式。

我认为没有更好的方式来做到这一点
partial
..
中的所有参数转换为
quosures
,而不进行任何计算。这意味着您需要对参数求值以获取其值,或者只能获取其表达式。此外,由于
quosure
是一个
rlang
特定的对象结构,因此没有比使用
tidy_u u eval
更好的方法来评估它。也许你已经发现了你能做的最好的事情。如果你只想保存一些击键,那么也许你可以做
rlang::eval_tidy(environment(foop)$args$a)
注意,你通过这种方式获得的值不能保证与实际调用函数时生成的值匹配。原因是表达式涉及随机数生成,但在需要时才会对其求值。获取所用
a
的准确值的唯一可靠方法是将
foo
存储在内部,然后将其作为输出的一部分返回。另外,对于总是计算为相同值的确定性表达式,这不是一个问题。
<partialised>
function (...) 
foo(a = runif(1), ...)
[1] 0.05872499