R:更新包中的列表变量

R: Update List Variable In Package

我有一个包含列表变量的 R 包。此包中的几个函数使用此列表变量。

我想从包外部更改此列表变量的值。我可以使用

更新包外的功能
library(R.utils)
f <- function(x) x
reassignInPackage("f", pkgName="name", f);

但是,当我尝试覆盖列表变量时

 global <- list(a=5, b=3) 
 reassignInPackage("global", pkgName="name", global);

我收到错误,

Error in unlockBindingT(name, env) : use of NULL environment is defunct

有没有办法覆盖包内定义的列表变量?

查看函数 utils::assignInNamespace

假设您在名为 myPackage 的包中定义了以下代码:

tmpList <- list(a=5)
tmpGetList <- function(){ tmpList }

然后下面的代码演示了一个不成功和一个成功的变化:

library(myPackage)
tmpList <- list(b=2) # only replaces outside the namespace verified by:
tmpGetList()    # still returns original list(a=5) 

utils::assignInNamespace("tmpList", list(b=3), ns="myPackage" )
tmpGetList()    # returns the new list(b=3)