S3 通用方法未出现在包手册中
S3 generic method not appearing in package manual
在我的 R 包中,包手册 .pdf 文件中省略了一些函数 - 它们都是 S3 方法,其中几个函数一起记录。所有其他 "normal" 函数都正确显示,所以我怀疑我没有正确记录 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.
方法中的 @keywords internal
并且做到了:myfun
出现在包的手册中。我还切换到 @rdname myfun
而不是 @describeIn myfun
,以删除函数文档中的 "Methods (by class):" 部分。
很难隔离的原因是,如果我 运行 devtools::document()
然后不重新启动会话,方法 myfun.data.frame
和 myfun.default
在RStudio 的自动完成功能,可以直接调用。它们不应该被用户访问,我认为我的 Roxygen2 文档是罪魁祸首。
事实上,我所要做的就是删除 @keywords internal
。
方法 myfun.data.frame
和 myfun.default
do 在键入 ?
后出现在自动完成中,例如 ?myfun.default
,但是我认为没有办法解决这个问题(无论如何,它都指向所有三个 myfun
函数的单个帮助页面)。这是标准的。例如,?print.aov
是可见的帮助文件,而print.aov()
不能直接调用。
在我的 R 包中,包手册 .pdf 文件中省略了一些函数 - 它们都是 S3 方法,其中几个函数一起记录。所有其他 "normal" 函数都正确显示,所以我怀疑我没有正确记录 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.
方法中的 @keywords internal
并且做到了:myfun
出现在包的手册中。我还切换到 @rdname myfun
而不是 @describeIn myfun
,以删除函数文档中的 "Methods (by class):" 部分。
很难隔离的原因是,如果我 运行 devtools::document()
然后不重新启动会话,方法 myfun.data.frame
和 myfun.default
在RStudio 的自动完成功能,可以直接调用。它们不应该被用户访问,我认为我的 Roxygen2 文档是罪魁祸首。
事实上,我所要做的就是删除 @keywords internal
。
方法 myfun.data.frame
和 myfun.default
do 在键入 ?
后出现在自动完成中,例如 ?myfun.default
,但是我认为没有办法解决这个问题(无论如何,它都指向所有三个 myfun
函数的单个帮助页面)。这是标准的。例如,?print.aov
是可见的帮助文件,而print.aov()
不能直接调用。