更新嵌入数据,例如sysdata.rda

dbe*_*ner 10 r package

我最近提交给CRAN的提交被反弹,因为我已经完成了对全球环境的任务,现在这个环境已经不受欢迎了.

我有一个嵌入式数据集(sysdata.rda),它包含基于用户所在州(如美国)的配置参数.我希望这个嵌入式数据集在新用户使用该程序时可以更新.我之前在用户使用的初始函数中更新了这些数据,并通过全局赋值使用户可以访问它.

我正在努力弄清楚如何更新此嵌入数据并使其成为用户在其余会话中使用的默认数据.

以前我把数据放在/ data中,最近将它切换到/R/sysdata.rda,因为它似乎更适合该语言环境.现在我不太确定.

任何帮助非常感谢

had*_*ley 4

关键是要在全局环境以外的环境中进行分配。有两种基本技术,使用local()和/<<-或显式创建新环境:

使用显式环境非常简单:创建环境,然后像列表一样分配给它:

my_opts <- new.env(parent = emptyenv())
set_state <- function(value) my_opts$state <- value
get_state <- function() my_opts$state
Run Code Online (Sandbox Code Playgroud)

使用起来local()有点复杂,需要一些技巧<<-

set_state <- NULL
get_state <- NULL

local({
  state <- NULL
  get_state <<- function() state
  set_state <<- function(value) state <<- value
})
Run Code Online (Sandbox Code Playgroud)

有关<<-工作原理的更多信息,请参阅https://github.com/hadley/devtools/wiki/environments 的“分配:将名称绑定到值”部分。