[英]Modifying many objects in enclosing environment of a function
通常,在R中,函数首先创建一个新环境并在内部进行填充。 我想拥有一个定义/重新初始化可用于该函数的父环境的很多东西的函数。
我知道我可以对特定的变量使用<<-
运算符,但是在这里我有很多函数,变量甚至定义的环境,并且我希望在函数中使用参数来选择是否使用父环境。
当前,我正在调用该函数,然后根据需要附加其环境,如下所示:
init <- function(){
things <- 0
ICI <<- environment()
success <- TRUE
return(success)
}
init();attach(ICI)
它工作正常,但是否可以将函数的当前环境更改为父环境,以便我可以定义打开或关闭此行为的函数的参数?
实际上,可以在函数中调用attach
,并且返回父环境时,附件不会被破坏,因此以下内容可以使父环境中的所有内容恢复原状:
init <- function(transparent=FALSE){
# compute values
things <- 0
success <- TRUE
# follow "set back variables" argument
ICI <- environment()
if(transparent){
attach(ICI) # everything is transmitted to the parent environment
}else{
ICI <<- ICI # only transmit a handle for the environment
}
return(success)
}
init();# attach(ICI)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.