gpt4 book ai didi

r - 您能让 R 函数在求值时查看其自身形式的值吗?

转载 作者:行者123 更新时间:2023-12-04 16:07:19 24 4
gpt4 key购买 nike

在 R 语言中,假设我有一个函数 ff(jj, kk, mm)。我希望调用函数(或在交互式 session 中调用人类)能够使 mm 在调用时以任意方式依赖于 jj 和 kk 。

为了具体起见,假设:

ff <- function(jj, kk, mm){
xx <- jj + kk
out<- xx/mm
out
}

然后在运行时,我想设置mm <- jj*kk 。即:

ff(2, 3, (jj*kk))

这会产生:

Error in ff(2, 3, (jj * kk)) : object 'jj' not found

直到 mm 才会抛出此错误被评估,即在 jj 之后和kk已经是评价成功。因此,然后使用不同的范围对它们进行第二次评估规则。我知道这是 R 标准范围。我想问一下,我可以写吗函数的方式让我可以给 mm 一个简单的数字,或者一个函数其他正式论点,前提是这些论点之前已经或可以被评估 mm是必须的?

请注意,我并不是在问我是否应该这样做。我会坚决假装对那些有礼貌的人就后一个问题提出看法。

我也不是问我是否可以预先计算 jj 并将预先简化的数字交给 ff。我知道这是一个看似合理的答案,但由于我简化了的原因,它不起作用问题所在。

最佳答案

就目前情况而言,您的函数 ff() 不起作用,因为 supplied arguments are evaluated in the context of the calling environment ,从这个有利位置来看,jjkk 都不是“可见的”。

要在函数自身评估框架的上下文中评估提供给 mm 的语句,请使用 eval(substitute()),如下所示:

ff <- function(jj, kk, mm){
mm <- eval(substitute(mm))
xx <- jj + kk
out<- xx/mm
out
}

ff(2, 3, (jj*kk))
## [1] 0.8333333

关于r - 您能让 R 函数在求值时查看其自身形式的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com