我是 R 的新手,我对 R 中局部变量和全局变量的使用感到很困惑。
我在互联网上读到一些帖子说如果我使用=
or <-
我将在当前环境中分配变量,并使用<<-
我可以在函数内部访问全局变量。
然而,据我记得,在 C++ 中,每当在括号内声明变量时,就会出现局部变量{}
,所以我想知道这对于 R 来说是否相同?或者只是为了功能在R中我们有局部变量的概念。
我做了一个小实验,这似乎表明只有括号是不够的,我有什么问题吗?
{
x=matrix(1:10,2,5)
}
print(x[2,2])
[1] 4
函数内部声明的变量是该函数的局部变量。例如:
foo <- function() {
bar <- 1
}
foo()
bar
给出以下错误:Error: object 'bar' not found
.
如果你想做bar
全局变量,你应该这样做:
foo <- function() {
bar <<- 1
}
foo()
bar
在这种情况下bar
可以从函数外部访问。
然而,与 C、C++ 或许多其他语言不同,括号并不能确定变量的范围。例如,在以下代码片段中:
if (x > 10) {
y <- 0
}
else {
y <- 1
}
y
后仍可访问if-else
陈述。
正如您所说,您还可以创建嵌套环境。您可以查看这两个链接以了解如何使用它们:
- http://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html http://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html
- http://stat.ethz.ch/R-manual/R-devel/library/base/html/get.html http://stat.ethz.ch/R-manual/R-devel/library/base/html/get.html
这里有一个小例子:
test.env <- new.env()
assign('var', 100, envir=test.env)
# or simply
test.env$var <- 100
get('var') # var cannot be found since it is not defined in this environment
get('var', envir=test.env) # now it can be found
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)