在R中访问本地环境中的变量
我正在阅读哈德利·威克姆的《高级R》,以便更好地理解这种语言。我在“环境”一章中遇到了一个章节,他谈到了局部变量优先于全局变量 比如说,在R中访问本地环境中的变量,r,global-variables,environment,R,Global Variables,Environment,我正在阅读哈德利·威克姆的《高级R》,以便更好地理解这种语言。我在“环境”一章中遇到了一个章节,他谈到了局部变量优先于全局变量 比如说, h <- function(){ x<-10 function(){ x } } i<-h() x<-20 i() 输出为13。我本来希望8,因为我在h()的调用函数g()中创建了一个局部变量y。不是吗 如果您能提供任何意见和指导,我将不胜感激。当调用h()函数时,您可以将x分配给该函数本地的3。当它试图计算x+y
h <- function(){
x<-10
function(){
x
}
}
i<-h()
x<-20
i()
输出为13
。我本来希望8
,因为我在h()
的调用函数g()
中创建了一个局部变量y
。不是吗
如果您能提供任何意见和指导,我将不胜感激。当调用h()
函数时,您可以将x
分配给该函数本地的3。当它试图计算x+y
时,它在局部函数中找不到y
的定义,因此,它取全局声明的y
的值,即10。因此,输出为10+3=13。g()
函数中的y
值仅对该函数是局部的,而对h()
函数不是局部的。所有功能的本地环境都是不同的,并且相互独立
如果希望y
从g
函数中保持其值,可以在h()
函数中传递y
的值
如下所示更新两个函数:
g <- function() {
x <- 2
y<-5
h(y)
}
h <- function(y) {
x <- 3
x + y
}
另外,如果将g()
函数中的y
更新为
g <- function() {
x <- 2
y <<-5 #Note the <<- operator.
h()
}
g当调用h()
函数时,您将x
分配给该函数本地的3。当它试图计算x+y
时,它在局部函数中找不到y
的定义,因此,它取全局声明的y
的值,即10。因此,输出为10+3=13。g()
函数中的y
值仅对该函数是局部的,而对h()
函数不是局部的。所有功能的本地环境都是不同的,并且相互独立
如果希望y
从g
函数中保持其值,可以在h()
函数中传递y
的值
如下所示更新两个函数:
g <- function() {
x <- 2
y<-5
h(y)
}
h <- function(y) {
x <- 3
x + y
}
另外,如果将g()
函数中的y
更新为
g <- function() {
x <- 2
y <<-5 #Note the <<- operator.
h()
}
g