【问题标题】:Using datasets in an R package在 R 包中使用数据集
【发布时间】:2018-06-14 18:32:07
【问题描述】:

我正在尝试在 CRAN 上获取我的软件包 (https://github.com/jmcurran/relSim) 的最新版本。这已被拒绝,因为在未导出的函数中使用了包中包含的数据集(即用户无法使用它,除非他们使用 ::: 运算符。代码 sn-p:

testIS = function(nc = c(3, 2), locus = 1, seed = 123456){
  set.seed(seed)
  np = 2 * nc[2]
  freqs = USCaucs$freqs

数据集包含在包中,根据 Hadley 的建议,我的说明文件中有 LazyData: true。然而,我从https://win-builder.r-project.org 收到了这条消息,我不知道如何解决。

 * checking R code for possible problems ... [11s] NOTE
 testIS: no visible binding for global variable 'USCaucs'
 Undefined global functions or variables::
   USCaucs

我觉得这特别令人沮丧,因为正如我所说,这个函数甚至没有被导出(它也可以毫无怨言地工作,因为包加载了这个数据集)。感谢所有帮助

【问题讨论】:

  • 包裹是否因为备注而被拒绝?你有没有提供任何进一步的细节?对于内部数据,建议使用R/sysdata.rda。
  • 是的@aocall - 现在有一个 CRAN 预检查系统,它似乎基于 winbuilder。解决方案 - 您提示我发布作为我自己问题的答案的解决方案是/是您建议的。

标签: r cran


【解决方案1】:

该解决方案似乎涉及一些重复。在 Thomas Lumley 的建议下,我将对象放在 R/sysdata.rda 中,并将它放在 data/USCaucs.rda 中。我按照 Hadley Wickham 的建议使用 devtools::use_data 并将参数 internal 设置为 TRUE,以便以正确的方式将其保存为包。

如上所述,此解决方案涉及复制数据。对于像我这里的那个小对象来说,这不是问题,但我想有一个更优雅的解决方案。

【讨论】:

  • 您可以(硬?sym?)将一个文件链接到另一个文件,并在data-raw/USCaucs.rda中编写此步骤的脚本
  • 我也有同样的情况,数据在函数内部使用,但也是用户访问的有用参考。我想我会像你一样复制它
  • 我的情况与@see24 完全相同,但我无法忍受将相同的数据集作为内部和导出的数据集(不知道为什么!)对我有用的解决方案是当我需要引用导出的数据时使用包命名空间(有效地将其视为内部数据?) - 请参阅此答案stackoverflow.com/a/51410084/5168907。这感觉很奇怪,因为显然在一个包中你通常不需要命名空间引用你自己的函数——但你确实需要数据(如果不是内部的)——我认为。另一种方法是致电data(mydataset)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2020-10-10
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多