我正在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/