54

Roxygen2 PDF とこのサイトを読みましたが、@method @S3method @export の違いと、これらを使用して S3 メソッドを適切に文書化する方法について迷っています。議論のために次の例を作成しました。

  1. これらを適切に文書化するにはどうすればよいですか?

  2. クラス固有のすべての実装のユース ケースを示す ?print およびその他の汎用関数のドキュメントをエミュレートするにはどうすればよいですか (つまり、?print が「factor」、「table」、「function」の使用法を示す方法)。

  3. wiki ページから: 「すべてのエクスポートされたメソッドには @S3method タグが必要です。@method と同じ形式です。これは、関数ではなくメソッドをエクスポートします。つまり、generic(myobject) は機能しますが、generic.mymethod(myobject) は機能しません。 ."
    私はこれを解釈することはできません。これは、タグが正しく指定されていないと、関数/メソッド呼び出しが正しく機能しないということですか? 具体的にどこが壊れるの?

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

    MyHappyFunction.lm = 関数( x , ... ) {

    魔法をかける

    }

4

2 に答える 2

73

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
}

ただし、実際にはメソッドを文書化していないため、次で十分です。

#' 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
}
于 2014-03-23T22:56:36.443 に答える
41

この@methodタグは、Rd ファイルの \usage フィールドに \method エントリを生成します。

タグは@S3method、NAMESPACE ファイルに S3method() エントリを生成します。

タグは@export、NAMESPACE ファイルに 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
}

ここに画像の説明を入力

3 wikiページから…

「あなたは書かない」という意味なのだろう@S3method generic mymethod myobject

于 2011-08-26T02:58:06.163 に答える