Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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-如何正确记录S3方法_R_Roxygen_Roxygen2 - Fatal编程技术网

Roxygen2-如何正确记录S3方法

Roxygen2-如何正确记录S3方法,r,roxygen,roxygen2,R,Roxygen,Roxygen2,我已经阅读了RoxyGen2PDF以及这篇文章,对于@method@S3method@export之间的区别以及如何使用它们来正确记录S3方法,我感到困惑。我准备了下面的例子进行讨论: 1.如何正确记录这些内容? 2.如何模拟?print和其他通用函数的文档,这些函数显示所有类特定实现的用例(即?print显示“factor”、“table”、“function”用法的方式)。 3.从wiki页面:“所有导出的方法都需要@S3method标记。它与@method的格式相同。这会导出方法,而不是函

我已经阅读了RoxyGen2PDF以及这篇文章,对于@method@S3method@export之间的区别以及如何使用它们来正确记录S3方法,我感到困惑。我准备了下面的例子进行讨论:

1.如何正确记录这些内容?

2.如何模拟?print和其他通用函数的文档,这些函数显示所有类特定实现的用例(即?print显示“factor”、“table”、“function”用法的方式)。

3.从wiki页面:“所有导出的方法都需要@S3method标记。它与@method的格式相同。这会导出方法,而不是函数-即泛型(myobject)可以工作,但泛型。mymethod(myobject)不能。”
我无法解释这一点。这似乎是说,如果标签指定不当,函数/方法调用将无法正常工作?什么东西会断裂

MyHappyFunction = function( x , ... )
{
    UseMethod( "MyHappyFunction" )
}

MyHappyFunction.lm = function( x , ... )
{
  # do some magic
}

@method
标记在Rd文件的\usage字段中生成\method条目

@S3method
标记在名称空间文件中生成S3method()项

@export
标记在名称空间文件中生成export()项

以下是我的例子:

#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#'
#' @rdname MyHappyFunction
#' @export MyHappyFunction
MyHappyFunction <- function(x, ...){
  UseMethod("MyHappyFunction")
}

#' @return \code{NULL}
#'
#' @rdname MyHappyFunction
#' @method MyHappyFunction lm
#' @S3method MyHappyFunction lm
MyHappyFunction.lm = function(x, ...) {
  # do some magic
}

#' @return \code{NULL}
#'
#' @rdname MyHappyFunction
#' @method MyHappyFunction default
#' @S3method MyHappyFunction default
MyHappyFunction.default = function(x, ...) {
  # do some magic
}
MyHappyFunction的描述 #' #“MyHappyFunction的详细信息 #' #@title MyHappyFunction:我的快乐功能 #“@param x数值 #“@param。。。其他论点 #“@示例
#“a从roxygen2>3.0.0开始,您只需要
@export

#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#' @export
MyHappyFunction <- function(x, ...){
  UseMethod("MyHappyFunction")
}

#' @rdname MyHappyFunction
#' @export
MyHappyFunction.lm = function(x, ...) {
  # do some magic
}

#' @rdname MyHappyFunction
#' @export
MyHappyFunction.default = function(x, ...) {
  # do some magic
}
MyHappyFunction的描述 #' #“MyHappyFunction的详细信息 #' #@title MyHappyFunction:我的快乐功能 #“@param x数值 #“@param。。。其他论点 #“@示例
#'a几乎等同于几乎=)很好,示例三元组填写正确。但是
@method
+
@export
相当于
@s3method
Hadley-两个问题1。当我只使用\@S3method时,我看到的文档与使用\@method&@S3method时略有不同。在后一种情况下,我在我的使用文档中得到了以下内容“##S3类的方法…”,所以这两个标记都是必需的?2.根据我上面的第二个问题,您能否确认:文档折叠为泛型的唯一方法是,如果特定于类的实现省略了所有文档(因此没有参数、没有描述等)?或者更好:折叠文档的要求是什么?当我在roxygen(0.1-2)和roxygen2(2.1)中测试时,
@method
+
@export
并不等同于SFun28所说的
@S3method
@S3method
未生成\方法项。我认为roxygen(0.1-2)和roxygen2(2.1)中都需要这两个标签。Triad-感谢您的帮助+1您的解决方案非常有效。似乎您可以省略“@return\code{NULL}”,它也可以正常工作。把你的答案记下来。对哈德利的问题仍然悬而未决。对于多年后仍然来到这里的任何人来说,从Roxygen2 6.0.1开始,
@S3method
已被弃用,并给出了
警告:script。R:302:@S3method已被弃用。请改用@export
@方法
+
@导出
起作用
R CMD check
仍然抱怨只使用了
@export
。这个例子非常简单和清晰,它可能属于这里:嗯。在最新的R-devel中,这有没有可能被打破?我正在使用roxygen2 4.1.1和development R(rev 68657),并且有一个类似的示例(据我所见),其中S3方法没有得到正确的识别…@BenBolker me,S3被导出()而不是命名空间packageVersion(“roxygen2”)#[1]“4.1.1”我与本博克和蒂姆遇到了同样的问题,并在这里找到了解决办法
#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#' @export
MyHappyFunction <- function(x, ...){
  UseMethod("MyHappyFunction")
}

#' @export
MyHappyFunction.lm = function(x, ...) {
  # do some magic
}

#' @export
MyHappyFunction.default = function(x, ...) {
  # do some magic
}