【问题标题】:Namespaces in R packagesR 包中的命名空间
【发布时间】:2010-12-06 21:34:06
【问题描述】:

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

您如何决定导出什么?它只是真正不需要 pkg:::var 语法的所有内容吗?进口呢?

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

S4 课程是否有特殊注意事项?

我熟悉的使用诸如 sp 和 rgdal 等命名空间的包非常复杂 - 是否有简单的示例可以让事情变得更清楚?

【问题讨论】:

    标签: r


    【解决方案1】:

    我开始在 devtools wiki 上找到答案:http://adv-r.had.co.nz/Namespaces.html

    【讨论】:

    • 喜欢这个即将到来的wiki。很棒的资源!
    • @hadley 对于我创建的包,我现在必须为 2.14 添加一个命名空间。这个线程现在有点超出我的理解。例如,当我打开 plyr 的文件夹时,我看到一个名为 NAMSPACE 的文档。如果我将这个文件以与我的函数相同的格式放入我的包文件夹中,这就是我所要做的。
    • @TylerRinker 是的,这就是它的要点。为您希望导出的每个函数创建一个 export(...) 语句。如果您导入包,您还需要为每个包添加import(...) 语句。另请参阅此页面上@DirkEddelbuettel 的答案。
    • 但最好使用roxygen2为你创建。
    • 最近想知道是否可以交互式地创建命名空间。就像使用 new.env() 时的环境一样。我知道它们用于包,但是在开发不是包的更大脚本时仍然会很好。 devtools 是否提供类似的功能?
    【解决方案2】:

    几年后在这里......

    我综合了 Chambers 的发现、其他 StackOverflow 帖子以及 R 中的大量修改: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/

    这不是关于实现 NAMESPACE/IMPORTS/DEPENDS 而是更多关于这些结构的目的。回答您的一些问题。

    【讨论】:

    • 非常清晰(不像“Writing R Extensions”文档...)
    【解决方案3】:

    我读过的最清晰的解释是 John Chambers 的Software for Data Analysis: Programming with R,第 103 页。我不知道有任何免费的在线解释比你在 R 扩展手册中找到的更好。

    【讨论】:

    • 谢谢你,提醒我我还没读过 - 虽然我很高兴看到它出版
    • 这本书的讲解很详细,正是我所追求的
    【解决方案4】:

    您也可以选择一个简单的小包裹并按照它进行操作。

    我半随机地查看了digest,这是我的较小的软件包之一。我加载一个(小型)动态库并导出一个符号,digest() 函数。以下是 NAMESPACE 文件的内容:

    ## package has dynamic library
    useDynLib(digest)
    
    ## and one and only one core function
    export(digest)
    

    看看其余的源文件,也许在查看示例的同时尝试阅读Writing R Extensions,并做一些实验。

    【讨论】:

    • 不错,加上校验和算法——我一直想知道是否有 Rc 。 . .我的意思是一个 R 包;)
    • 是的。查看现有包的 NAMESPACE 文件绝对是我学习的方法。
    【解决方案5】:
    【解决方案6】:

    在 Ubuntu 20.04.2 LTS 上成功测试:

    sudo apt install build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 2012-05-01
      • 1970-01-01
      • 2016-07-19
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多