繁体   English   中英

在函数的封闭环境中修改许多对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM