![](/img/trans.png)
[英]Condition on the existence of the object in the User-defined function, not in the Global environment in R
[英]R editing global object defined in parent environment
我希望像在示例中一样编辑在父函数中定义的数据框dat,但是输出(从main返回)给出了未进行编辑的数据框。 显然这是由于R中的全局变量使用不当,但是有人可以解释一下这是为什么以及如何实现它吗?
indat <- data.frame(a = '0', b = '0')
main <-function(data){
assign("dat", data, envir = .GlobalEnv)
inner1()
inner2()
return(dat)
}
inner1<-function(){
print(dat$a)
dat$a <- '1'
return()
}
inner2<-function(){
print(dat$b)
dat$b <- '1'
return()
}
更改
dat$a <- '1'
至
dat$a <<- '1'
<<-为全局环境分配值,<-在本地“内部功能”环境中运行。 尽管您已经将'data'创建为全局变量,但据我所知,R在使用'<-'运算符时会在inner1()环境中创建一个新的'data'变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.