我需要在它的父环境(范围从该函数被调用)来访问变量的函数。 该变量是在内存方面大的,所以我宁愿不被调用的函数将它按值传递给。 难道还有比在全球范围内声明变量这样做其他的标准方法? 例如:
g <- function (a, b) { #do stuff}
f <- function(x) {
y <- 3 #but in my program y is very large
g(x, y)
}
我想在访问Ÿ g()
因此,像这样:
g <- function (a) { a+y }
f <- function(x) {
y <- 3 #but in my program y is very large
g(x)
}
这可能吗?
谢谢
有没有优势“宣布在全球范围内的变量”,它甚至有可能不会是可能的R中根据你的意思是什么。 您当然可以使用第二种形式。 导致对象的副本,甚至三份拷贝的操作是分配。 您需要更详细地说明你正在尝试通过代码来说明: y <- 3
。 通常不会需要,仅仅访问名为“Y”这是位于一个封闭的帧中的对象的功能的内部。
在声明的环境存储变量有时会提高访问效率,但我的理解是,效率提高了速度方面,因为使用了哈希表。 一个项目的访问在为一个访问列表元素相同的方式的环境中:
> evn <- new.env()
> evn$a <- rnorm(100000)
> ls(evn)
[1] "a"
> length(evn$a)
[1] 100000
该项目BigMemory可以提供此设施: http://www.bigmemory.org/ 。 它和拉姆利的biglm可以帮助在评论中提到的大数据集。