R中的全局变量和局部变量

沃克拉姆

我是R的新手,我对R中使用局部变量和全局变量感到非常困惑。

我在互联网上读到一些帖子,说如果我使用=<-我将在当前环境中分配变量,并且<<-可以在函数内部访问全局变量。

但是,正如我记得在C ++中,每当在方括号内声明变量时,都会出现局部变量{},所以我想知道R是否相同?还是仅对于R函数具有局部变量的概念。

我做了一个小实验,这似乎表明仅括号是不够的,我做错了吗?

{
   x=matrix(1:10,2,5)
}
print(x[2,2])
[1] 4
Betabandido

在函数内部声明的变量是该函数的局部变量。例如:

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
}

yif-else声明后仍可访问

如您所言,您还可以创建嵌套环境。您可以查看以下两个链接以了解如何使用它们:

  1. http://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html
  2. 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章