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)
我有一个包含列表变量的 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)