我是R的新手,我对R中使用局部变量和全局变量感到非常困惑。
我在互联网上读到一些帖子,说如果我使用=
或<-
我将在当前环境中分配变量,并且<<-
可以在函数内部访问全局变量。
但是,正如我记得在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
声明后仍可访问。
如您所言,您还可以创建嵌套环境。您可以查看以下两个链接以了解如何使用它们:
这里有一个小例子:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句