R中的全局变量

Alp*_*neo 135 r global-variables variable-assignment

我正在深入研究手册,我想问社区:我们如何在函数内设置全局变量?

Dir*_*tel 159

正如Christian对assign()节目的回答,有一种在全球环境中分配的方式.更简单,更短(但不是更好......坚持分配)的方式是使用<<-运算符,即

    a <<- "new" 
Run Code Online (Sandbox Code Playgroud)

在功能里面.

  • 这种方法实际上并不在全局环境中保存,而是在父作用域中保存.有时父作用域将与全局环境相同,但在某些情况下,有许多嵌套函数则不会. (36认同)
  • @Jasha `&lt;&lt;-` 将搜索包围链直至全局环境,并分配给它找到的第一个匹配变量。假设,如果你有一个函数“f()”嵌套在闭包“g()”中,并且“a”存在于“g()”中,那么在“f()”中使用“a &lt;&lt;-”将分配给`g()` 中的 `a`,而不是全局环境。然而,通常这就是您想要的。 (5认同)
  • 为什么`assign`比`&lt;&lt;-`更受青睐? (3认同)

Chr*_*ian 86

我找到了一个解决方案,用于通过assign分配邮件列表中的全局变量:

a <- "old"
test <- function () {
   assign("a", "new", envir = .GlobalEnv)
}
test()
a  # display the new value
Run Code Online (Sandbox Code Playgroud)


小智 7

怎么样.GlobalEnv$a <- "new"?我在这里看到了在特定环境中创建变量的这种明确方式:http : //adv-r.had.co.nz/Environments.html。它似乎比使用该assign()功能更短。