この質問は、 roxygen2 v4 を使用して名前にドットを含む S3 以外のメソッドをエクスポートすることに関連していますが、これとは異なります。その投稿から@export function.name
、名前空間が roxygen によって正しく書き込まれるためには、使用する必要があることを学びました。私はそれを行い、NAMESPACEは正しく書かれています。
私の問題は、R CMD Check を実行するときに発生します。function を持つレガシーコードがありますtail.g()
。R CMD Check は、明らかな S3 メソッドがエクスポートされたが登録されていないことを通知する NOTE をスローします。
再現可能な例を以下に示します。注がxxxx.g
ないことに注意してください。これtail
は、utils パッケージのジェネリックであるため、特別な回避策が必要であると私に信じさせます。これはレガシー コードであるため、tail.g の名前を tail_g に変更したくありません。CRAN 提出を成功させるために、すべてのメモを削除したいと思います。
library(roxygen2)
package.skeleton("test")
writeLines(
"#' Check an argument
#'
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export tail.g
tail.g <- function(...) 0",
"test/R/tail.g.R"
)
writeLines(
"#' Check an argument
#'
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export xxxx.g
xxxx.g <- function(...) 0",
"test/R/xxxx.g.R"
)
roxygenise("test")
setwd("./test")
devtools::check(document=FALSE)
注:
checking S3 generic/method consistency ... NOTE
Found the following apparent S3 methods exported but not registered:
tail.g
名前を変更せずに tail.g() の NOTE を削除するにはどうすればよいですか?