【问题标题】:Documenting a package that defines a function with the same name记录定义同名函数的包
【发布时间】:2020-08-15 20:09:17
【问题描述】:

我正在编写一个名为 foo 的包,它使用各种 S3 方法定义了一个名为 foo 的 S3 类。我编写了一个构造函数foo(),它返回一个foo 对象。在包之后命名类,在类之后命名函数似乎很实用,我希望:

  • package?foo 会打开软件包帮助页面。
  • ?foo?foo::foo 会弹出函数帮助页面。

但是会发生什么:

  • package?foo?foo 都会显示软件包帮助页面。
  • 只有?foo::foo 会调出功能帮助页面。

有没有办法为包和函数赋予相同的名称以产生我想要的行为?

目前我有一个像这样的文件foo_package.R

#' The foo package
#' 
#' A very useful package.
#' 
#' @docType package
#' @name foo
NULL

还有一个像这样的文件foo.R

#' The foo function
#' 
#' A very useful function.
#' 
#' @param x A data frame.
#' @return A foo object.
#' @export
foo <- function(x) {
  structure(x, class = c("foo", "data.frame"))
}

感谢任何提示...

【问题讨论】:

  • 约定似乎是使用?foo-package 获取包帮助(请参阅herehere)和?foo 获取函数帮助。 type?topic 语法特定于 S4 泛型。你无法从你的包中真正改变它的工作方式。
  • 按照您的第二个链接中建议的vignette("rd") 中“包”下的注释,我现在根据需要获得package?foo 的包帮助和?foo 的功能帮助。但是,?foo-package 带来了 ?"-",算术运算符的帮助!
  • 对不起。我的错。它将是?"foo-package",因为您不能在帮助主题名称中使用运算符。但这就是你做help(package="foo")时应该出现的那个
  • ?"foo-package" 有效。谢谢 - 我会用更正的 roxygen 块合成一个答案。

标签: r package roxygen2 rd


【解决方案1】:

按照@MrFlick 评论中的second link,它指向vignette("rd") 中“包”下的文本,我能够得到预期的行为。

foo.R 保持不变,但 foo-package.R 现在变为:

#' The foo package
#' 
#' A very useful package.
#' 
#' @docType package
#' @keywords internal
#' @aliases foo-package
"_PACKAGE"

现在,根据需要:

  • package?foo?"foo-package" 调出软件包帮助。
  • ?foo?foo::foo 调出功能帮助。

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多