3

S3ジェネリックといくつかのメソッドを含むパッケージがあります。同じ関数を使用して複数のクラスを処理しているため、同じ関数を複数の名前に割り当てています。私が抱えている具体的な問題は、両方の変数が S3 メソッドにバインドされていることを roxygen2 が認識せず、@S3methodディレクティブを含めないと、一部の S3 メソッドのエクスポートに失敗することです。ただし、これにより非推奨の警告が表示されます (「@S3method は非推奨です。代わりに @export を使用してください」)。

次の(不自然な)小さな例は、この問題を示しています。

#' The size of an object.
#' The size of an object
#' 
#' @export
size  <- function(x) UseMethod('size')

#' @export
size.default  <-  function(x) "I dunno" 

#' @export
#' @S3method size matrix
size.data.frame  <-  
size.matrix  <-  function(x) prod(dim(x))

#' @export
#' @S3method size character
size.factor  <-  
size.character  <-  function(x) length(x)

#' @export
#' @S3method size integer
size.double  <-  
size.integer  <-  function(x) sum(x)

@S3method非推奨のディレクティブを使用せずに、行列、文字、および整数メソッドをエクスポートする方法がわかりません。非推奨のディレクティブを使用せずにこれらのメソッドをエクスポートする方法はありますか?

ありがとう!

4

1 に答える 1

1

最も簡単な方法は、次の 2 行を使用することです。

#' @export
size.matrix  <-  function(x) prod(dim(x))
#' @export
size.data.frame  <-  size.matrix
于 2014-12-11T18:17:18.317 に答える