【发布时间】:2010-11-17 05:19:30
【问题描述】:
我正在研究手册,我想问社区: 我们如何在函数内部设置全局变量?
【问题讨论】:
标签: r global-variables variable-assignment
我正在研究手册,我想问社区: 我们如何在函数内部设置全局变量?
【问题讨论】:
标签: r global-variables variable-assignment
.GlobalEnv$a <- "new" 呢?我在这里看到了在特定环境中创建变量的这种显式方式:http://adv-r.had.co.nz/Environments.html。它似乎比使用assign() 函数要短。
【讨论】:
正如 Christian 对 assign() 的回答所示,有一种方法可以在全局环境中分配。一种更简单、更短(但不是更好……坚持分配)的方法是使用 <<- 运算符,即
a <<- "new"
在函数内部。
【讨论】:
assign 比<<- 更受欢迎?
<<- 将向上搜索外壳链直到全局环境,并分配给它找到的第一个匹配变量。假设,如果你有一个函数 f() 嵌套在一个闭包 g() 中并且 a 存在于 g() 中,那么在 f() 中使用 a <<- 将分配给 a 在 g() 中,而不是全球环境。然而,这通常是你想要的。
我找到了如何通过assign 在mailinglist posting 中设置全局变量的解决方案:
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value
【讨论】: