人们如何了解如何为R包命名空间?我发现“R Extensions”中的文档很好,但我并不真正了解导入或导出变量时发生的事情 - 我需要这些指令的虚拟指南。
您如何决定出口?是不是只需要pkg ::: var语法的所有内容?进口怎么样?
当函数名称重叠时,导入是否更容易确保您对其他包函数的使用不会混淆?
S4课程有特殊注意事项吗?
我熟悉使用sp和rgdal等名称空间的软件包非常复杂 - 是否有简单的例子可以让事情变得更清晰?
答案 0 :(得分:37)
我开始回答devtools wiki:http://adv-r.had.co.nz/Namespaces.html
答案 1 :(得分:24)
几年后,这里......
我整合了钱伯斯的调查结果,其他StackOverflow帖子以及R中的大量修补: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/
这不是关于实施NAMESPACE / IMPORTS / DEPENDS以及更多关于这些结构的目的。回答你的一些问题。
答案 2 :(得分:14)
我读过的最清楚的解释是在John Chambers的Software for Data Analysis: Programming with R,第103页。我不知道任何免费的在线解释比你在R Extensions手册中已经找到的更好。
答案 3 :(得分:11)
您还可以选择一个简单的小包装并按照它进行操作。
我半随机地看了digest,这是我的一个较小的包裹。我加载一个(小)动态库并导出一个符号digest()
函数。以下是NAMESPACE文件的内容:
## package has dynamic library
useDynLib(digest)
## and one and only one core function
export(digest)
查看其余的源文件,并尝试阅读编写R扩展并查看示例,并进行一些实验。
答案 4 :(得分:1)
答案 5 :(得分:0)
在 Ubuntu 20.04.2 LTS 上测试成功:
sudo apt install build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev