R 记录 S4 通用不显示用法
R documenting S4 generic does not show usage
这个问题已经被问到 in this Whosebug question 但接受的答案(从作者的存储库下载 S4 分支)对我不起作用,我认为可能有更好的方法来实现同样的目标。
我的文件中有以下内容 generics.R
:
#' @rdname myfunction-methods
#' @name myfunction <- without this, roxygen2 complaints about missing name
#' @export
methods::setGeneric("myfunction",
function( arg1, arg2 ),
arg3, arg4 {
methods::standardGeneric("myfunction")
});
然后在我的文件中 mymethods.R
:
#' Something
#'
#' A brief description
#'
#' @param all params...
#' @return Something
#' @name myfunction <- without this, roxygen2 complaints on missing name
#' @include generics.R
#' @rdname myfunction-methods
#' @export
methods::setMethod( "myfunction",
methods::signature( arg1 = "formula", arg2 = "data.frame" ),
function( arg1, arg2, arg3, arg4 ) {
...whatever
}
)
有了这个,一切都很好,除了 usage
部分没有出现。您能否更正我的文档中的错误?更准确地说:
在 setMethod 之前编写文档是否正确,还是最好在 setGeneric 之前?
为什么两个文件中都需要 @name
?应该不一样吗?重要吗?
两个文件都需要 @export
吗?
@alias
会有帮助吗?
非常感谢您。
我无法回答您所有的问题,但以下内容可能会有所帮助:
- 我认为您可能遇到了问题,因为
roxygen2
在解析文件时无法识别 methods::setMethod
和 methods::setGeneric
。您必须通过 #' @import methods
将方法包导入到您的命名空间中,从而避免使用 ::
- 通常不只是在这里使用。然后你直接调用 setMethod
和 setGeneric
而不引用包。
如果这不能解决您的问题,您始终可以手动定义用法条目并仍然像这样使用 roxygen2:#' @usage \S4method{myfunction}{formula,data.frame}(arg1, arg2)
.
这个问题已经被问到 in this Whosebug question 但接受的答案(从作者的存储库下载 S4 分支)对我不起作用,我认为可能有更好的方法来实现同样的目标。
我的文件中有以下内容 generics.R
:
#' @rdname myfunction-methods
#' @name myfunction <- without this, roxygen2 complaints about missing name
#' @export
methods::setGeneric("myfunction",
function( arg1, arg2 ),
arg3, arg4 {
methods::standardGeneric("myfunction")
});
然后在我的文件中 mymethods.R
:
#' Something
#'
#' A brief description
#'
#' @param all params...
#' @return Something
#' @name myfunction <- without this, roxygen2 complaints on missing name
#' @include generics.R
#' @rdname myfunction-methods
#' @export
methods::setMethod( "myfunction",
methods::signature( arg1 = "formula", arg2 = "data.frame" ),
function( arg1, arg2, arg3, arg4 ) {
...whatever
}
)
有了这个,一切都很好,除了 usage
部分没有出现。您能否更正我的文档中的错误?更准确地说:
在 setMethod 之前编写文档是否正确,还是最好在 setGeneric 之前?
为什么两个文件中都需要
@name
?应该不一样吗?重要吗?两个文件都需要
@export
吗?@alias
会有帮助吗?
非常感谢您。
我无法回答您所有的问题,但以下内容可能会有所帮助:
- 我认为您可能遇到了问题,因为
roxygen2
在解析文件时无法识别methods::setMethod
和methods::setGeneric
。您必须通过#' @import methods
将方法包导入到您的命名空间中,从而避免使用::
- 通常不只是在这里使用。然后你直接调用setMethod
和setGeneric
而不引用包。
如果这不能解决您的问题,您始终可以手动定义用法条目并仍然像这样使用 roxygen2:#' @usage \S4method{myfunction}{formula,data.frame}(arg1, arg2)
.