R记录S4通用不显示用法

时间:2016-03-11 00:25:44

标签: r generics documentation s4 roxygen2

这个问题已经被问到in this stackoverflow 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部分没有出现。你能否纠正我的文档中的错误?更确切地说:

  1. 在setMethod之前编写文档是否正确,或者最好在setGeneric之前编写文档?

  2. 为什么我在两个文件中都需要@name?应该有所不同吗?这有关系吗?

  3. 我在两个文件中都需要@export吗?

  4. @alias会有所帮助吗?

  5. 非常感谢你。

1 个答案:

答案 0 :(得分:1)

我无法解答您的所有问题,但可能会有以下帮助:

  1. 我认为您可能遇到问题,因为roxygen2在解析文件时无法识别methods::setMethodmethods::setGeneric。您必须通过::将methods-package导入到命名空间中,以避免使用#' @import methods - 通常不在此处。然后,您可以直接致电setMethodsetGeneric,而无需引用该软件包。
  2. 如果这不能解决您的问题,您可以随时手动定义使用条目,并仍然使用roxygen2,如下所示:#' @usage \S4method{myfunction}{formula,data.frame}(arg1, arg2)