我正在R中工作,例如,我想做

printx <- function() {
  x <- 1
  printy()
  return(x)
}

printy <- function() {
  print(x)
}

因为我不想一直传递大量的变量(而且,全局环境中没有x)。有没有办法做到这一点?所有功能都可以访问全局环境,但是功能环境和全局环境之间的关系又如何呢?

最佳答案

也许

printx <- function() {
  x <- 1
  printy()
  return(x)
}

printy <- function() {
  print(get('x',envir=parent.frame()))
}

> x<-0
> printy()
[1] 0
> printx()
[1] 1
[1] 1

这将使用由x打印的printy,该ojit_code与调用该函数的环境相关联。

另一种可能性是创造一个新的环境
e1<-new.env(parent = baseenv())

> assign('x',12,envir=e1)
> x
[1] 0
> get('x',e1)
[1] 12

关于r - 是否可以使函数识别其上方范围内的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11731654/

10-12 20:14