访问函数的父环境并删除对象
Accessing function's parent environment and removing objects
假设我想编写一个简单的 rename 函数,它将通过 .Rprofile
加载。功能简单,可以类比:
carsNewName <- mtcars; rm(mtcars)
.Rprofile
.Rprofile
中可用的函数格式为:
.env$rename <- function(oldName, newName) {
newName <- oldName
rm(oldName, envir = parent.env())
return(newName)
}
.env
通过 attach(.env)
.
附加
问题
如何通过 parent.env()
访问函数的父环境? 即如果在另一个函数中调用 rename
函数,我想重命名不在全局环境中的对象。
f
从父环境显示 x
,然后从父框架显示 x
:
f <- function() {
e <- environment() # current environment
p <- parent.env(e)
print(p$x)
pf <- parent.frame()
print(pf$x)
}
g <- function() {
x <- 1
f()
}
x <- 0
g()
给予:
[1] 0
[1] 1
假设我想编写一个简单的 rename 函数,它将通过 .Rprofile
加载。功能简单,可以类比:
carsNewName <- mtcars; rm(mtcars)
.Rprofile
.Rprofile
中可用的函数格式为:
.env$rename <- function(oldName, newName) {
newName <- oldName
rm(oldName, envir = parent.env())
return(newName)
}
.env
通过 attach(.env)
.
问题
如何通过 parent.env()
访问函数的父环境? 即如果在另一个函数中调用 rename
函数,我想重命名不在全局环境中的对象。
f
从父环境显示 x
,然后从父框架显示 x
:
f <- function() {
e <- environment() # current environment
p <- parent.env(e)
print(p$x)
pf <- parent.frame()
print(pf$x)
}
g <- function() {
x <- 1
f()
}
x <- 0
g()
给予:
[1] 0
[1] 1