gpt4 book ai didi

r - 按函数名称在调用堆栈中查找父环境

转载 作者:行者123 更新时间:2023-12-04 09:42:29 24 4
gpt4 key购买 nike

我正在一个可变深度的调用堆栈中工作,看起来像

TopLevelFunction
-> <SomeOtherFunction(s), 1 or more>
-> AssignmentFunction

现在,我的目标是分配一个在 AssignmentFunction 中创建的变量。 ,到 TopLevelFunction的环境.我知道我可以用 sys.calls 提取堆栈,所以我目前的方法是
# get the call stack and search for TopLevelFunction
depth <- which(stringr::str_detect(as.character(sys.calls()), "TopLevelFunction"))
# assign in TopLevelFunction's environment
assign(varName, varValue, envir = sys.frame(depth))

我或多或少对此感到满意,但我不确定将调用对象转换为字符向量是否是个好主意。这种方法容易出错吗?更一般地说,您将如何在只知道函数名称的情况下搜索特定的父环境?

最佳答案

像这样的 fn

get_toplevel_env <- function(env) {

if (identical(parent.env(env), globalenv())) {
env
} else {
get_toplevel_env(parent.env(env))
}
}

并在像这样的嵌套函数的任何级别中使用它?
get_toplevel_env(as.environment(-1))

关于r - 按函数名称在调用堆栈中查找父环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046281/

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