R 包中的对象存储在哪里?

Where are objects stored in R packages?

我正在重构另一个作者(我公司的前雇员)的 R 包。作者在 roxygen2 示例中使用了多个显然存储在包中某处的变量。它们可以通过 pkgname:::bar 访问。我在整个包中重命名了其中一些变量以提高命名一致性,假设变量现在被称为 foo 而不是 bar,但是示例不再是 运行 devtools::check()。错误:Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : object 'foo' not found。但是,我找不到它们的定义位置。 data 文件夹中没有将被命名为 bar 的对象,并且在所有文件(在 RStudio 和 Windows Explorer 中)中搜索变量名称不会显示任何内容。然而,pkgname:::bar 仍然有效。我应该在哪里寻找任何想法 bar?

变量也可以在包的普通 R 脚本中使用 foo <- new.env() 创建,然后用内容填充,例如

foo <- new.env()

foo <- data.frame(
  x=1:10,
  y <- rnorm(10)
)

也可以隐藏内部数据,例如.foo。例如,CRAN 包 marelac 在文件 aaa.Rgas_schmidt.R 和其他一些文件中使用了这种机制。

另一种可能性是可以将文件 sysdata.rda 放在 /R 文件夹中,请参阅:https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Package-subdirectories