gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:35:30 24 4
gpt4 key购买 nike

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

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

但是,据我记得,在 C++ 中,每当您在方括号 {} 内声明变量时,就会出现局部变量。 ,所以我想知道这对于 R 来说是否相同?或者只是对于 R 中的函数,我们才有局部变量的概念。

我做了一个小实验,似乎表明只有括号是不够的,我有什么问题吗?

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

最佳答案

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

foo <- function() {
bar <- 1
}
foo()
bar

给出以下错误:错误:找不到对象“bar”

如果你想让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

关于r - R 中的全局变量和局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com