通常在R中,函数首先创建一个新环境并在其中完成其内容。我想有一个函数来定义/重新初始化函数的父环境可访问的大量内容。
我知道我可以使用<<-
运算符来表示特定变量,但在这里我有很多的函数,变量,甚至是已定义的环境,我希望能够选择函数中的参数是否使用父环境。
目前,我正在调用该函数,然后根据需要附加它的环境,如下所示:
init <- function(){
things <- 0
ICI <<- environment()
success <- TRUE
return(success)
}
init();attach(ICI)
它工作正常,但是他们可以将函数的当前环境更改为父环境,以便我可以定义函数的参数来打开或关闭此行为吗?
答案 0 :(得分:0)
实际上可以在函数中调用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)