【问题标题】:Exporting an environment from an R package从 R 包中导出环境
【发布时间】:2012-12-09 16:23:11
【问题描述】:

我正在开发一个 R 包,它包装了 rmongodb 包,并创建了一个开发人员友好的界面来使用 MongoDB。该包在内部使用proto

我想通过一个名为MongoDB的原型对象(一个环境)导出一个工厂方法,其定义是:

MongoDB <- proto(
  new = function(., ...) {
    # Good stuff in here...
  }
)

在使用 RStudio 和devtools 进行开发期间以及在本地测试期间,这似乎不是问题。但是,我遇到了几个问题:

  • devtools::check() 坚持在我的 NAMESPACE 文件中放置一个 import(MongoDB),这使得 R CMD check 失败并显示“不需要命名空间依赖项:'MongoDB'”。

  • 当我删除此导入指令时,R CMD check 在运行我的testthat 测试时失败,并出现“找不到对象'MongoDB'”,即使我手动添加了export(MongoDB)。但是,devtools::test() 在 RStudio 中运行良好。

从 R 包中导出 proto 对象(即环境)的推荐方法是什么?

更新:

根据 Gabor 在下面的建议,我已确保 MongoDB.RdMongoDB 声明为数据(链接有来源)。我仍然在MongoDB 中失败,在测试中不可见(使用testthat)。我的DESCRIPTION 文件是hereNAMESPACEhere

【问题讨论】:

  • 您可能还想看看RMongo 包。它使用Java 驱动程序并且具有比rmongodb 包更高级别的接口。

标签: r mongodb devtools proto testthat


【解决方案1】:

试试这个:

  1. 在您的NAMESPACE 文件中指定export("MongoDB") 以使MongoDB 原型对象公开可用。
  2. 在您的DESCRIPTION 文件中指定LazyData: yes,以便在访问时自动加载。
  3. 添加一个.Rd 文件,将其记录为数据集。

然后它应该通过R CMD check

【讨论】:

  • 感谢您的建议,Gabor。出于同样的原因,我仍然失败check:加载测试时找不到MongoDB。我已经用Rd 文件、DESCRIPTIONNAMESPACE 的链接更新了问题。
  • @Sim,我已经使用我提到的 3 点创建了包并且它们有效,所以这可能是您使用的开发环境而不是 R 的问题。您可能需要接受它这些工具的维护者。
  • 只是为了确保我理解:由于问题出现在测试中,您是否建议我向@hadley 提出问题,看看是否与testthat (测试所在)有关或devtools(在NAMESPACE 中发出可能错误的指令)?
【解决方案2】:

这个指令:

import(MongoDB)

表示您将MongoDB 命名空间导入到您的包中。如果我理解正确,可能不是你想要的。

我想你想导出MongoDB对象,那么

export(MongoDB) 

应该可以正常工作。

【讨论】:

  • 对。 import 语句是由devtools 插入的,并不酷。唉,export(MongoDB) 不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多