R将所有变量设置为全局环境

时间:2016-12-16 22:52:32

标签: r

有没有办法将本地环境中的所有变量都设置为全局环境?我知道如何为单变量做这个。如果我有30多个变量怎么办?我可以将所有本地工作区发送到全球吗?感谢。

myfunction=function(){
    assign("a", 10, envir = .GlobalEnv)
}
myfunction()
print (a)

或者在Rnw文件的情况下。我能做到

a=3
environment(a)=.GlobalEnv

2 个答案:

答案 0 :(得分:0)

您的方法的一个小修改将起作用:

vars <- ls(all = TRUE)
for (i in 1:length(vars)){
assign(vars[i], get(vars[i]), envir = .GlobalEnv)
}

这使用for循环以编程方式访问本地环境中每个变量的名称,然后在.GlobalEnv中为每个变量指定相同的名称。

答案 1 :(得分:0)

作为一个函数,allglobal()在它被调用的环境(parent.frame)中获取对象(变量和函数),并将它们全部分配给全局环境。第二个功能是测试。运行后,全局环境中存在“test1”和“test2”:

allglobal <- function() {
    lss <- ls(envir = parent.frame())
    for (i in lss) {
        assign(i, get(i, envir = parent.frame()), envir = .GlobalEnv)
    }
}

testallglob <- function() {
    test1 <- 1
    test2 <- function() 2
    allglobal()
}