Поскольку roxygen2
version 4.0.0
, тег @S3method
устарел в пользу использования @export
.
Теперь пакет пытается определить, является ли функция S3-методом, и автоматически добавляет строку S3method(function,class)
в файл NAMESPACE
, если она считает, что она одна.
Проблема заключается в том, что если функция не является методом S3, но ее имя содержит .
, тогда roxygen иногда делает ошибку и добавляет строку, когда она не должна.
Есть ли способ сказать roxygen, что функция не является методом S3?
В соответствии с запросом здесь воспроизводимый пример.
У меня есть пакет, который импортирует R.oo
с функцией с именем check.arg
.
library(roxygen2)
package.skeleton("test")
cat("Imports: R.oo\n", file = "test/DESCRIPTION", append = TRUE)
writeLines(
"#' Check an argument
#'
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export
check.arg <- function(...) 0",
"test/R/check.arg.R"
)
roxygenise("test")
Теперь пространство имен содержит строку S3method(check,arg)
.
check
является S3-родовым в R.oo
, поэтому roxygen пытается быть умным и угадывающим, что я хочу, чтобы check.arg
был методом S3. К сожалению, эти функции не связаны, поэтому я этого не делаю.
(Чтобы упредить предложения, которые я просто переименовал check.arg
: это устаревший код, написанный другими, и я создал замену checkArg
, но мне нужно оставить check.arg
как устаревшую функцию для совместимости.)