【问题标题】:Can I not use Global vars in R? [duplicate]我不能在 R 中使用全局变量吗? [复制]
【发布时间】:2012-04-06 09:17:54
【问题描述】:

可能重复:
Global variables in R

在我写的文件的开头添加广告:

t.code = c()

然后在类似的函数中:

calc <- function(){

   ..some stuff

   t.code = append(t.code, value)
}

最后我打印了 t.code 内容,但我看到 NULL,所以似乎没有使用全局 var,有什么建议吗?

【问题讨论】:

  • 在 R 中分配变量的惯用方式是使用 &lt;- 而不是 =。但是在这种情况下,您正在寻找 &lt;&lt;-stat.ethz.ch/R-manual/R-devel/library/base/html/assignOps.html 来自文档:运算符 > 导致在环境中搜索正在分配的变量的现有定义。如果找到这样的变量(并且其绑定未锁定),则重新定义其值,否则在全局环境中进行赋值。
  • 很少需要分配给全局变量(或一个好主意),尤其是如果您是 R 新手。我会改为使用您的函数 return(value) 并在单独的步骤中附加。跨度>

标签: r


【解决方案1】:

您可以,但您必须使用全局赋值运算符 &lt;&lt;-(或更复杂的 assign)。

t.code <<- append(t.code,value)

现在标准的免责声明:通常不鼓励使用&lt;&lt;-,因为这种编程风格并不是 R 真正想要的那种习惯用法。

仔细阅读 R 的 scoping 规则可能会让您受益。

【讨论】:

  • &lt;&lt;- 仅当在任何搜索环境中都找不到变量时才在全局环境中赋值。
猜你喜欢
  • 1970-01-01
  • 2013-12-18
  • 2023-03-16
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 2019-11-09
  • 2021-06-20
  • 2019-11-01
相关资源
最近更新 更多