我可以在R中保存函数的临时环境吗?

时间:2016-10-19 10:15:11

标签: r function

我目前正在为特定情节编写一个相当大的功能。我想保留函数创建的所有对象以解决错误,但到目前为止我的网络搜索都没有成功。

快速可视化。假设

fun <- function(x) {
  y <- x+1
  z <- y^2
  z*4
}

fun(2)
[1] 36

对于这个简单的情况,我想将y和z保持在一个可访问的环境中,以便能够理解我的函数的某些阶段产生的结果。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以返回列表中的对象,或使用

分配函数内的变量
assign("x", x, envir = .GlobalEnv)

答案 1 :(得分:1)

与@ user116的回答类似,有一个特殊的运算符可以实现您想要的效果。

它是使用<<-运算符的分配函数的快捷方式。查看help("<<-")了解详情。但基本上,你可以&#34;保存&#34;这样做是yz在全球环境中:

# Make sure that these do not exist first.
stopifnot( all( !exists("y"), !exists("z")))

fun <- function(x) {
  y <<- x+1
  z <<- y^2
  z*4
}

fun(2)

# Verify y and z exist now.
stopifnot( all( exists("y"), exists("z")))
y
z

有很多关于环境的知识,这可能对编写长函数等有帮助,所以这只是冰山一角。