更改 R 包中的内部数据

Altering internal data in R package

我正在处理一个需要引用外部数据的包(我们称它为 myPackage),该数据太大而无法合并到包本身(有很多 netCDF 文件)。

因此我有一个内部 PATH 变量(我在 /data-raw/ 中启动它,它保存到 sysdata.rda,并且我关闭了延迟加载)。当要求获取数据时,任何函数都可以使用此 PATH 来查找数据。

我希望用户能够指定他们的路径,所以我写了一个函数:

setpath<-function(path){
  myPackage:::PATH = path
}

setpath("C:/")是行不通的。我收到错误:setpath("C:/") 错误:找不到对象 'myPackage'。

我还尝试了以下替代功能:

setpath<-function(path){
  PATH = path
}

这样,变量 myPackage:::PATH 永远不会改变。

我应该怎么做?内部数据是只读的吗?

您可以使用 options()。使用

创建一个选项

options(myPackageRepositoryPath = "some/path")

并检索它

path <- getOption(myPackageRepositoryPath)

与设置选项一样,您也可以覆盖选项:

setpath<-function(path){
  options(myPackageRepositoryPath = path)
}