【问题标题】:function not being added to NAMESPACE函数未添加到 NAMESPACE
【发布时间】:2016-09-08 19:55:55
【问题描述】:

我有一个要添加到包中的功能。我正在通过devtools::document() 生成文档。此函数和大约 70 个其他函数的 .Rd 文件已成功生成,但此函数未添加到命名空间。

可以在以下链接中找到该文件,也许更重要的是,它被称为truncate.distribution.r。我还有许多其他名称中带有句点的函数,所以我几乎可以肯定这不是问题。

但是,当我浏览 NAMESPACE 时,我注意到了这一行 S3method(truncate,distribution),并想知道类似的名称是否是巧合(即逗号,而不是句号)。我尝试从名称中删除句点,并重新生成文档和 NAMESPACE,一切正常——也就是说,函数与包一起导出。

虽然更改后的名称有效,但我想了解它失败的原因以及将来如何防止类似的失败。另外,我喜欢原来的名字。 :)

有人有什么想法吗?非常感谢。

【问题讨论】:

  • 请注意:我认为建议对这些类型的名称使用连字符而不是句点(即 truncate-distribution.r)。
  • ... 因为点导致函数被解释为S3methods(...)。简而言之,“不要那样做”。
  • 连字符?我会猜到一个下划线。连字符被解析器解释为“减号”。

标签: r roxygen2 r-package


【解决方案1】:

所以你们是对的,这与名称中的句点有关。对我们造成问题的特定文件是名称的第一部分(“truncate.”...)已经是基本函数,因此被解释为 S3methods。

感谢所有回答的人。我不确定我为什么会被否决——知道不在函数名中使用句点不是固有知识,也不是我所看到的任何地方都明确禁止的(即Hadley'sGoogle's 样式指南)。

【讨论】:

    【解决方案2】:

    我发现了另一个导致类似悲伤的潜在原因。我的最后一行 Roxygen 代码在 #' @export 命令中有错字,导致同样的不良行为

    【讨论】:

    • 这似乎并不能直接回答问题,即函数名称中允许使用标点符号,但您说的是文档中的错字。没有任何迹象表明 OP 有类似的拼写错误,并且基于拼写错误的问题通常会因为离题而被关闭
    猜你喜欢
    • 2020-05-29
    • 2019-06-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2017-04-21
    • 2019-06-14
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多