49

新しいクラス、サーベイヤー、およびprintこのためのメソッドを定義するパッケージを作成していますprint.surveyor。私のコードは問題なく動作し、インライン ドキュメントには roxygen を使用しています。ただしR CMD check、次の警告が表示されます。

ドキュメント オブジェクト 'print.surveyor' では使用されているがコードでは使用されていない関数/メソッド: print

Hadley によって書かれた次の 2 つのページをインスピレーションとして使用しました: NamespacesDocumenting functions。どちらも正しい構文は@method function-name class

私の質問は次のprintとおりです。Roxygen を使用して新しいクラスのメソッドを文書化する正しい方法は何ですか? より具体的には、どうすれば警告を取り除くことができますか?


これが私のコードです:(コメント付きのドキュメントは、これを修正しようとする試みを示していましたが、どれもうまくいきませんでした。)

#' Prints surveyor object.
#' 
#' Prints surveyor object
#' 
## #' @usage print(x, ...)
## #' @aliases print print.surveyor
#' @param x surveyor object
#' @param ... ignored
#' @S3method print surveyor
print.surveyor <- function(x, ...){
    cat("Surveyor\n\n")
    print.listof(x)
}

そして、roxygenized 出力、すなわちprint.surveyor.Rd:

\name{print.surveyor}
\title{Prints surveyor object.}
\usage{print(x, ...)
#'}
\description{Prints surveyor object.}
\details{Prints surveyor object

#'}
\alias{print}
\alias{print.surveyor}
\arguments{\item{x}{surveyor object}
\item{...}{ignored}}
4

3 に答える 3

43

アップデート

roxygen2 > 3.0.0 の時点で、パッケージはこれらすべてを理解する上でよりスマートになりました。@exportタグが必要なだけで、 roxygenはどのような種類のドキュメントを作成しているかを判断し、NAMESPACE変換中にその他を書き込むときに適切な処理を行います。

roxygenを手伝う必要がある例外があります。Hadley Wickham がR Packagesの本で使用している例は、 . その関数名には、何がクラスで何がジェネリック関数 ( 、、または) なのか、あいまいさがあります。all.equal.data.frameallall.equalall.equal.data

そのような場合、ジェネリックとクラス/メソッドを明示的に通知することで、roxygenを助けることができます。

@method all.equal data.frame

以下の元の回答では、明示的に使用する必要がある場合の古い動作について詳しく説明しています@method


オリジナル

関数は次の@methodタグで文書化する必要があります。

#' @method print surveyor

@hadley のドキュメントを最初に読んだとき、私はroxygenに慣れていないので少し混乱しましたが、このセクションを何度か読んだ後、必要な理由が理解できたと思います@method

メソッドの完全なドキュメントを作成していprintます。@S3methodに関連し、メソッドがエクスポートされるようにNAMESPACE手配します。メソッドを文書化するためのものではありません。@S3method

Rd ファイルのusageセクションに次の内容が含まれている必要があります。

\method{print}{surveyor}(x, ...)

これが正しく機能する場合は、Rd ファイルで S3 メソッドを文書化する正しい方法であるためです。

于 2011-06-29T08:20:48.763 に答える
27

roxygen2 > 3.0.0. の時点では、roxygen はそれが S3 メソッド@exportであると判断できるため、必要なだけです。print.surveyorこれは、今必要なのは

#' Prints surveyor object.
#' 
#' @param x surveyor object
#' @param ... ignored
#' @export
print.surveyor <- function(x, ...){
    cat("Surveyor\n\n")
    print.listof(x)
}

ただし、この場合、ドキュメントはあまり役に立たないため、おそらく次のようにすることをお勧めします。

#' @export
print.surveyor <- function(x, ...){
    cat("Surveyor\n\n")
    print.listof(x)
}
于 2014-03-23T22:54:12.000 に答える