【问题标题】:S3 generic method not appearing in package manualS3 通用方法未出现在包手册中
【发布时间】:2016-10-18 12:50:20
【问题描述】:

在我的 R 包中,包手册 .pdf 文件中省略了一些函数 - 它们都是 S3 方法,其中几个函数一起记录。所有其他“正常”功能都正确显示,所以我怀疑我没有正确记录 S3 方法。

我希望在手册中出现myfun 的条目。现在,.pdf 手册中完全缺少该函数,尽管它仍然可以正确调用,并且它的帮助页面用?myfun 引用。我的 Roxygen2 关键字错了吗?

#' @export
myfun <- function(...) UseMethod("myfun")

#' @inheritParams myfun
#' @describeIn myfun Create a frequency table from a vector.
#' @export
#' @keywords internal

myfun.default <- function(vec, sort = FALSE, show_na = TRUE, ...) {
...
}

#' @inheritParams myfun.default
#' @describeIn myfun Create a frequency table from a data.frame,
#' supplying the unquoted name of the column to tabulate.
#' @export
#' @keywords internal
tabyl.data.frame <- function(.data, ...){
...
}

(我省略了@title, @description, @param, @return, @examples 行以使这个问题更短,但可以在相关时对其进行编辑)。

通用方法按预期导出,因此用户只能看到myfun() 而看不到myfun.default()myfun.data.frame(),除非他们使用三重冒号:::。我想保留这种行为,所以用户只需调用myfun,同时在包手册中也有myfun 的条目。

【问题讨论】:

  • 目前,myfun 根本没有出现在手册中。我不想要 myfun.defaultmyfun.data.frame 的部分,我只想要手册中 myfun 的条目 - 我会在问题中更清楚地说明这一点。

标签: r generics roxygen2


【解决方案1】:

我在两个myfun. 方法中删除了@keywords internal,并且做到了:myfun 出现在包的手册中。我还切换到 @rdname myfun 而不是 @describeIn myfun,以消除函数文档中的 "Methods (by class):" 部分。

使这难以隔离的是,如果我运行 devtools::document() 然后不重新启动会话,则方法 myfun.data.framemyfun.default 在 RStudio 的自动完成中可见并且可以直接调用。他们不应该被用户访问,我认为我的 Roxygen2 文档是罪魁祸首。

事实上,我所要做的就是删除@keywords internal

方法myfun.data.framemyfun.default do 在输入? 后出现在自动完成中,例如?myfun.default,但我认为没有办法解决这个问题(它指向无论如何,所有三个myfun 函数的单个帮助页面)。这是标准的。比如?print.aov是一个可见的帮助文件,而print.aov()是不能直接调用的。

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多