У меня есть пакет PackageA с общей функцией:
#' doWork
#'
#' Do some work!
#'
#' @export
setGeneric(
"doWork",
function(x) {
standardGeneric("doWork")
})
setMethod(
"doWork",
signature = c("numeric"),
definition = function(x) {
x == 10 # Some logic...
}
В PackageB, который зависит от PackageA, я хотел бы добавить еще несколько методов в doWork:
#' @import PackageA
setMethod(
"doWork",
signature = c("character"),
definition = function(x) {
length(x) == 1 && x == "10" # Some more logic...
}
Это работает. Однако это означает, что пользователь PackageB должен также library(PackageA).
Это не удается:
library(PackageB)
doWork("10") # Fails!
Это работает:
library(PackageA)
library(PackageB)
doWork("10")
Я хотел бы использовать generic из PackageA в PackageB, но не требует загрузки PackageA для использования только методов в PackageB.
Как я могу это достичь?