S3通用方法未出现在包装手册

时间:2016-10-18 12:50:21

标签: r generics roxygen2

在我的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的条目。

1 个答案:

答案 0 :(得分:0)

我在两个@keywords internal方法中删除了myfun.并执行了此操作:myfun出现在软件包的手册中。我也切换到了@rdname myfun而不是@describeIn myfun,以消除函数文档中的&#34;方法(按类):&#34;

这使得难以隔离的原因是,如果我运行devtools::document()然后不重启会话,那么方法myfun.data.framemyfun.default在RStudio&#39;中可见。 s自动完成,可以直接调用。它们不应该被用户访问,我认为我的Roxygen2文档应该受到责备。

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

myfun.data.frame输入myfun.default之后,方法??myfun.default 会出现在自动填充中,但我认为&#39 ; s无处可去(无论如何,它指向所有三个myfun函数的单个帮助页面)。这是标准的。例如,?print.aov是可见的帮助文件,而print.aov()无法直接调用。