【问题标题】:Global variable on load in R packageR包中加载的全局变量
【发布时间】:2021-01-04 12:09:32
【问题描述】:

我正在用 R 编写一个包,我想在其中包含一些示例对象,以便用户轻松访问。问题是它们包含非 ASCII 字符,R CMD check 不允许在data 中的 .rda 文件中出现这种情况。但是,它将允许 inst/extdata 中的 Unicode。我可以在加载包时读取这些数据集并将其包装在对象中。我尝试了assign<<-,但都无法正常工作。

或者,它们可以在安装包的过程中加载并保存为 .rda 文件。事实上,这会更可取,但从我的阅读来看,这似乎不太可能。

可能不相关但可能有趣的一点历史:我在 Debian 不稳定的环境中启动了该软件包。我将这些数据集保存为 .rda 并且它们很好地通过了检查。有一次我做了一点更正,重新保存它们,并收到警告。我再次保存了它们,警告消失了。然后我搬到了 Debian 稳定版,添加了一些新的数据集,将它们全部重新保存,现在我无法以任何方式摆脱警告。但是,当我从 r-devel 中保存它们时,我只收到一条注释,而不是警告。

【问题讨论】:

  • 你能不能用一个函数来代替?是否从extdata 读取函数并让用户从函数中加载对象? stackoverflow.com/questions/12598242/…
  • 非常感谢!当你提到函数时,我意识到我非常想将变量定义为全局变量,我没想过简单地通过 roxygen 导出它们。我很惭愧地说我花了两天时间,我本来可以问你的。

标签: r unicode package dataset cran


【解决方案1】:

答案非常简单:读取数据并在R 文件夹中的一个文件中准备变量,然后#' @export 它们。不需要assign 或任何东西。

【讨论】:

  • R 4.0 或之后的版本除外,它引入了分阶段安装,因此无法使用system.file。我最终dputting 所有对象,将它们粘贴到 R 文件夹中的一个文件中,并转义所有 Unicode 字符……Windows 不知道如何将其转换为本机编码。这太荒谬了。
猜你喜欢
  • 2012-09-17
  • 2010-11-17
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
相关资源
最近更新 更多