我几天前在Ubuntu 12.04上升级到R 3.0.1并且似乎没有任何工作...... :(最烦人的事情是我在包中编译我的软件包在R 3.0.1之后的功能是只是没有了(就像它们没有被导出一样)。这一切都在R 2.15.3和之前......
我在https://github.com/SamoPP/packageTest创建了一个非常简单的可重现示例。如果您构建包并使用require(packageTest)加载它,则不能在其中使用简单的函数...
问题是:
> require(packageTest)
....
> printTestPackage()
Error: could not find function "printTestPackage"
> packageTest::printTestPackage()
Error: 'printTestPackage' is not an exported object from 'namespace:packageTest'
> packageTest:::printTestPackage()
[1] "Testing!!! And it works."
如何说服R 3.0.1自动导出./R/文件夹中所有* .R文件中的所有函数以前在R 3.0.1之前的默认行为?
我在这里缺少什么?
我希望消息不是:您需要在R版本3.0之后显式导出包中的所有函数...因为这意味着我可以编写一周或两周的导出...我希望有一个解决方法。
感谢任何建议/提示/修正/...
编辑: 以这种方式更改NAMESPACE文件以通过
添加“常规”(导出所有不以点开头的输出)导出模式exportPattern("^[^\\.]")
解决了我的问题,因为我没有时间为我想要导出的每个函数显式编写导出。直到下一次改变.... :)
仍在寻找更优雅/“正确的方式”解决方案......
答案 0 :(得分:3)
您的NAMESPACE
文件未导出任何内容。只有NAMESPACE
中导出的功能才会显示。请参阅section on namespaces in Writing R extension。
如果您希望显示您的功能,请将以下内容放在NAMESPACE
文件中:
export(printTestPackage)
事实上,通过NAMESPACE
显式导出函数的需要并没有在R 3.0中引入,但是之前,我想至少R 2.15或更确切地说是R 2.14。