R包中的命名空间

时间:2010-12-06 21:34:07

标签: r

人们如何了解如何为R包命名空间?我发现“R Extensions”中的文档很好,但我并不真正了解导入或导出变量时发生的事情 - 我需要这些指令的虚拟指南。

您如何决定出口?是不是只需要pkg ::: var语法的所有内容?进口怎么样?

当函数名称重叠时,导入是否更容易确保您对其他包函数的使用不会混淆?

S4课程有特殊注意事项吗?

我熟悉使用sp和rgdal等名称空间的软件包非常复杂 - 是否有简单的例子可以让事情变得更清晰?

6 个答案:

答案 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