【问题标题】:Global variables in RR中的全局变量
【发布时间】:2010-11-17 05:19:30
【问题描述】:

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

【问题讨论】:

    标签: r global-variables variable-assignment


    【解决方案1】:

    .GlobalEnv$a <- "new" 呢?我在这里看到了在特定环境中创建变量的这种显式方式:http://adv-r.had.co.nz/Environments.html。它似乎比使用assign() 函数要短。

    【讨论】:

      【解决方案2】:

      正如 Christian 对 assign() 的回答所示,有一种方法可以在全局环境中分配。一种更简单、更短(但不是更好……坚持分配)的方法是使用 <<- 运算符,即

          a <<- "new" 
      

      在函数内部。

      【讨论】:

      • 这种方式实际上并不保存在全局环境中,而是保存在父作用域中。有时父作用域与全局环境相同,但在某些情况下有很多嵌套函数时则不同。
      • 为什么assign&lt;&lt;- 更受欢迎?
      • @Jasha &lt;&lt;- 将向上搜索外壳链直到全局环境,并分配给它找到的第一个匹配变量。假设,如果你有一个函数 f() 嵌套在一个闭包 g() 中并且 a 存在于 g() 中,那么在 f() 中使用 a &lt;&lt;- 将分配给 ag() 中,而不是全球环境。然而,这通常是你想要的。
      【解决方案3】:

      我找到了如何通过assignmailinglist posting 中设置全局变量的解决方案:

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

      【讨论】:

      猜你喜欢
      • 2012-06-09
      • 2012-09-17
      • 2011-04-08
      • 2021-01-04
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多