繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM