如何从同一个包中的函数访问包变量?如何从函数访问包变量?
以下代码仅将x
本地更改为该函数。如何从该功能更改myPackage::x
?
例子:
x <- list()
populate_list <- function() {
x["a"] <- 4
}
-
这里是我使用的是get
测试这个完整的代码。每次包运行时,cache
密钥的选择都会有所不同。这是封装代码,在R/get_obj.R
cache <- list()
test_cache <- function(){
cache <- get("cache")
cache[[paste(sample.int(10),collapse="-")]] <- 1
return(cache)
}
我测试它在R 3与:
> library(devtools)
> load_all("mypackage")
Loading mypackage
> mypackage::test_cache()
$`4-1-6-5-9-3-10-2-7-8`
[1] 1
> mypackage::test_cache()
$`6-9-7-10-5-1-4-2-3-8`
[1] 1
> mypackage::cache
list()
对于mypackage::cache
和mypackage::test_cache()
第二次运行,我期望该列表作为输出:
$`4-1-6-5-9-3-10-2-7-8`
[1] 1
$`6-9-7-10-5-1-4-2-3-8`
[1] 1
试着做'cache'的环境 - 您正在运行R的默认修改拷贝行为。 – hadley
您还在test_cache函数内部定义了一个名为cache的局部变量。如果你删除了一行'cache <-get(“cache”)'会发生什么,但剩下的部分是一样的?您可能仍然需要使用缓存环境,因为方法内部的更改将导致如上所述复制该值。 –
@RobGevers与第一个例子中的内容类似吗?然后该变量不在“包”范围内修改。 – Andreas