【问题标题】:Exclude function from R package manual从 R 包手册中排除功能
【发布时间】:2016-06-18 12:39:48
【问题描述】:

我正在编写一个 R 包,并且正在使用 roxygen2 记录我的所有函数。但是,我不希望所有功能都出现在包的手册中。 我如何指定哪些功能应该出现在包手册中,哪些不应该出现?

我知道用前导点命名函数,例如.f <- function() 而不是 f <- function() 是一种解决方案。还有其他解决方案吗?

【问题讨论】:

  • 如果您不希望它们出现在手册中,为什么要记录它们?
  • 因为它对我回忆函数的作用以及其他可能想要使用“隐藏”函数的人都很有用。我相信我在其他包中看到了一些示例,其中我在导入包后在控制台中写?function_name 找不到该函数的帮助页面,但是如果我写?pkgname:::function_name,我能够看到帮助页面。不过我可能记错了。
  • 但是使用::: 访问的函数不会从包中导出——这通常意味着作者不打算让客户端使用该函数。通常,此类功能没有记录在案 - 例如tools:::.is_ASCII。我猜如果你遇到一个确实有文档的非导出函数,很可能它以前是一个导出的(和记录的)函数,并在以后的版本中从导出列表中删除。
  • 如果您按照设计使用包,导出或未导出的函数将通过 roxygen2 创建一个 man/ 文档。我做你所描述的方式是不在评论中包含引用,所以 roxygen 不会接受它。例如需要帮助文件:#' @param ...不需要帮助文件# @param ...Here's an example

标签: r documentation package roxygen2


【解决方案1】:

我错过了 Hadley Wickham 的优秀著作 R packages 中的以下细节(在对象文档部分):

@keywords keyword1 keyword2 ... 添加标准化关键字。关键字是可选的,但如果存在,则必须从 file.path(R.home("doc"), "KEYWORDS") 中的预定义列表中获取。

通常,除了@keywords internal 之外,关键字没有那么有用。 使用 internal 关键字会从包索引中删除函数并禁用它们的一些自动化测试。对于扩展您的包的其他开发人员(但大多数用户不感兴趣)感兴趣的功能,通常使用 @keywords internal。

所以在 roxygen2 函数文档中添加 @keywords internal 会导致该函数不会出现在包手册/索引中,但在加载包后仍然可以访问帮助页面。

【讨论】:

  • +1 用于发现 @keywords internal. 我不想用我的内部辅助功能让人们厌烦,谢谢!
  • 即使在内部添加了@keywords 之后,也会生成手动文件。当用户尝试搜索帮助并且所有这些内部功能也显示为建议时,这非常烦人。有解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多