You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取purrr包中部分应用函数的绑定参数值?

嘿,这里有几个更简洁优雅的方案来提取foop中参数a的取值,比你当前的方法更紧凑:

先回顾你的场景代码

library(purrr)
foo = function(x, a) x + a
foop = partial(foo, a = runif(1))

# 你当前的实现
e = as.list(environment(foop))
rlang::eval_tidy(e$args$a)
# [1] 0.05872499

方案1:省去转列表的直接访问

rlang::eval_tidy(environment(foop)$args$a)

直接抓取foop的闭包环境,取出其中的args列表里的a项再求值——这一步砍掉了将环境转为列表的冗余操作,代码更紧凑。

方案2:如果a是已固定的求值结果(大多数场景)

如果你的a是像示例中那样,在创建partial时就已经被求值的(比如runif(1)在生成foop时就产出了固定数值),那甚至可以跳过eval_tidy,直接取值:

environment(foop)$args$a

因为purrr::partial默认会立即求值你传入的参数值,所以environment(foop)$args$a已经是最终的数值,不需要额外求值步骤。

方案3:rlang风格的简洁写法

如果你习惯用rlang的工具链,也可以这样写(适合动态获取环境变量的场景):

rlang::eval_tidy(rlang::env_get(environment(foop), "args")$a)

内容的提问来源于stack exchange,提问作者jakob-r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:48:15