gpt4 book ai didi

R - 评估环境中的嵌套函数

转载 作者:行者123 更新时间:2023-12-04 10:25:47 27 4
gpt4 key购买 nike

我试图通过将所有必要的依赖项(函数和数据)加载到新环境中并在该环境中评估表达式来以沙盒方式运行一大块 R 代码。但是,我在调用环境中其他函数的函数时遇到了麻烦。这是一个简单的例子:

jobenv <- new.env(parent=globalenv())
assign("f1", function(x) x*2, envir=jobenv)
assign("f2", function(y) f1(y) + 1, envir=jobenv)
expr <- quote(f2(3))

使用 evalexpr失败,因为 f2找不到 f1
> eval(expr, envir=jobenv)
Error in f2(3) : could not find function "f1"

而显式附加环境有效
> attach(jobenv)
> eval(expr)
[1] 7

我可能遗漏了一些明显的东西,但我找不到 eval 的任何排列打电话有效。有没有办法在不附加环境的情况下获得相同的效果?

最佳答案

有很多方法可以做到这一点,但我有点喜欢这个:

jobenv <- new.env(parent=globalenv())

local({
f1 <- function(x) x*2
f2 <- function(y) f1(y) + 1
}, envir=jobenv)

## Check that it works
ls(jobenv)
# [1] "f1" "f2"
local(f2(3), envir=jobenv)
# [1] 7
eval(quote(f2(3)), envir=jobenv)
# [1] 7

关于R - 评估环境中的嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732314/

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