繁体   English   中英

我可以将函数的局部变量绑定到调用环境吗?

[英]Can I bind a function's local variables to the calling environment?

在尝试调试R函数时,我想出了以下内容:
有没有办法可选地将被调用函数的局部变量绑定到调用环境?

例如

testFunction <- function(x=1,y=2){
  localVar1 <- x + 2
  localVar2 <- x + y
  sum(x,y)
}

sumXY <- testFunction()
if(exists("localVar1") && exists("localVar2")){
    print("test passed")
}

请注意,此功能仅用于交互式调试,而<<-运算符不适用于我的脚本。 编辑1:我正在寻找一种不会改变功能的解决方案,因为我正在使用它来测试/调试分析代码。

您可以使用trace()建立一个调用,该调用在退出之前保存对testFunction()的调用的求值框架。

然后,您可以在退出该环境之前查看评估框架(此处分配给对象TraceEnv )的内容。

testFunction <- function(x=1,y=2){
  localVar1 <- x + 2
  localVar2 <- x + y
  sum(x,y)
}

trace(testFunction, 
      quote({on.exit(assign("TraceEnv", parent.frame(4), .GlobalEnv))}))

sumXY <- testFunction()

if(with(TraceEnv, exists("localVar1") && exists("localVar2"))){
    print("test passed")
}
# [1] "test passed"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM