Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否需要使用Roxygen2单独记录S4类及其构造函数_R_S4_Roxygen2 - Fatal编程技术网

是否需要使用Roxygen2单独记录S4类及其构造函数

是否需要使用Roxygen2单独记录S4类及其构造函数,r,s4,roxygen2,R,S4,Roxygen2,我试图用我自己的初始化方法设计一个S4类,并用Roxygen2单独记录它们。假设我的类定义为: #' This is the classA #' @name classA-class #' @rdname classA-class ######## @aliases NULL #' @exportClass classA classA <- setClass(Class = "classA", slots = list(member = "ANY")) 在使用Roxygen2编译包之后。

我试图用我自己的初始化方法设计一个S4类,并用Roxygen2单独记录它们。假设我的类定义为:

#' This is the classA
#' @name classA-class
#' @rdname classA-class
######## @aliases NULL
#' @exportClass classA
classA <- setClass(Class = "classA", slots = list(member = "ANY"))
在使用Roxygen2编译包之后。我得到了2.Rd文件和3个帮助页面:

  • A班:这是A班
  • classA:这是classA
  • classA:这是构造函数
class?classA
classA
都将显示
classA class
帮助页面。这绝对是我想要的,因为我希望
class?classA
将导致
classA类:这是classA
,而
?classA
将导致
classA:这是构造函数

所以,我的问题是如何用Roxygen2分离类文档和构造函数文档? 非常感谢你的帮助


(我知道Roxygen2默认情况下会将别名与S4类的类名放在一起。但是当我设置
@aliases NULL
时,
classA类:这是classA
帮助页消失了!!只剩下
classA:这是构造函数

两个帮助文件显示在类文档下的原因是
setClass
始终使用类名作为文档中类的别名。此外,为
classA
定义的泛型
initialize
方法指定将其指向
classA方法的
@rdname classA

以下是两种解决方案:

首先,可以简化Roxygen2头代码并获得所需的行为,但需要使用
@name
调用initialize方法,而不是
classA

#' \code{classA} class definition
#'
#' @slot member description of this slot here
classA <- setClass(Class = "classA", slots = list(member = "ANY"))    

#' constructor for \link{classA-class}
#' 
#' This is the constructor.
#' @name initializeClassA
#' @export
setMethod("initialize", "classA", function(.Object, x) {
    .Object@member = x
    return(.Object)
})
#'\code{classA}类定义
#'
#“@此处有此插槽的插槽成员说明

非常感谢你提供的有用信息,肯。实际上,我试图构建的S4类包含10个不同的插槽,我已经用“prototype”为它们提供了默认值。问题是我的初始化方法是一个有数百行的复杂函数。。。这就是为什么我要把它们分开。不管怎样,正如您所说,最好将初始化方法和S4类的帮助页面组合在一起,或者为构造函数指定一个不同的名称。
#' \code{classA} class definition
#'
#' @slot member description of this slot here
classA <- setClass(Class = "classA", slots = list(member = "ANY"))    

#' constructor for \link{classA-class}
#' 
#' This is the constructor.
#' @name initializeClassA
#' @export
setMethod("initialize", "classA", function(.Object, x) {
    .Object@member = x
    return(.Object)
})