Ho un pacchetto di PackageA
con una funzione generica:In R, come posso estendere i metodi generici da un pacchetto all'altro?
#' doWork
#'
#' Do some work!
#'
#' @export
setGeneric(
"doWork",
function(x) {
standardGeneric("doWork")
})
setMethod(
"doWork",
signature = c("numeric"),
definition = function(x) {
x == 10 # Some logic...
}
In PackageB
, che dipende PackageA
, vorrei aggiungere ulteriori metodi di doWork
:
#' @import PackageA
setMethod(
"doWork",
signature = c("character"),
definition = function(x) {
length(x) == 1 && x == "10" # Some more logic...
}
Questo funziona. Tuttavia, significa che l'utente di PackageB
deve anche library(PackageA)
.
Questo fallisce:
library(PackageB)
doWork("10") # Fails!
Questo funziona:
library(PackageA)
library(PackageB)
doWork("10")
Vorrei utilizzare il generico PackageA
in PackageB
, ma non richiedono PackageA
deve essere caricato per utilizzare solo i metodi in PackageB
.
Come posso ottenere questo risultato?
Il mio roxygen non sembra gradire questo: "Errore nel blocco del roxygen ... .Data non è uno slot nell'ambiente di classe" – sdgfsdh
Noterò che questa è la soluzione perché funziona *, ma non lo fa Mi sembra il modo giusto di farlo. – sdgfsdh