我正在开发一个包装rmongodb
包的R包,并创建一个开发人员友好的界面来处理MongoDB。该软件包在内部使用proto
。
我想通过名为MongoDB
的proto对象(环境)导出单个工厂方法,其定义为:
MongoDB <- proto(
new = function(., ...) {
# Good stuff in here...
}
)
在开发过程中使用RStudio&amp; devtools
并且在本地测试期间,这似乎不是问题。但是,我遇到了几个问题:
devtools::check()
坚持在我的NAMESPACE文件中放置一个import(MongoDB)
,使R CMD check
失败并且“不需要命名空间依赖:'MongoDB'”。
当我删除此导入指令时,即使我手动添加R CMD check
,testthat
也会在运行export(MongoDB)
测试时失败并显示“找不到对象'MongoDB'。但是,devtools::test()
在RStudio中运行良好。
从R软件包导出proto
对象(环境)的推荐方法是什么?
更新
根据下面的Gabor建议,我确保MongoDB.Rd
将MongoDB
声明为数据(链接有源)。我仍然在MongoDB
无法在测试中看到失败(使用testthat
)。我的DESCRIPTION
文件为here,NAMESPACE
为here。
答案 0 :(得分:3)
试试这个:
export("MongoDB")
文件中指定NAMESPACE
,以使MongoDB
原型对象公开。LazyData: yes
文件中指定DESCRIPTION
,以便在访问时自动加载。.Rd
文件,将其记录为数据集。然后应该通过R CMD check
。
答案 1 :(得分:1)
该指令:
import(MongoDB)
表示您将MongoDB
命名空间导入到包中。如果我理解正确,可能不是你想要的。
我认为您要导出MongoDB
对象,然后
export(MongoDB)
应该可以正常工作。