【发布时间】:2014-07-22 17:12:18
【问题描述】:
我正在尝试通过 save() 保存函数调用中的变量
f <- function(x) {
r <- x - g(x)
r
}
g <- function(y) {
r <- y * h(y)
r
}
h <- function(z) {
save(list = ls(all = TRUE), file = "hello.RData", envir = parent.frame())
r <- log(z)
if (r < 10)
r^2
else r^3
}
然而,这会返回错误“object z not found”,即使根据文档 parent.frame() 是 envir 的标准值。
save(list = ls(all = TRUE), file = "hello.RData", envir = sys.frame())
也不行
save(list = ls(all = TRUE), file = "hello.RData")
这行得通。但是,如果不是文档中给出的标准值,envir 实际上是什么对我来说有点神秘。
错误的原因是什么,为什么父框架是要在save()中查看的标准环境?
【问题讨论】:
-
虽然我知道这里正在进行范围界定,但您的函数
h在返回正确值的意义上工作得很好。您应该明确指出,将内部变量保存到您的.rdata文件是行不通的。