Ultimamente sto sperimentando molto con le classi S4, ed è raro riavviare R per cancellare tutte le definizioni di classe e i metodi personalizzati dal mio spazio di lavoro. Ovviamente rm(list=ls(all.names=TRUE))
non serve a niente. Potrei rimuovere manualmente tutte le classi e i metodi singolarmente scrivendo le righe una alla volta, ma sono sicuro che ci sarà un modo più semplice.Come posso rimuovere tutti i metodi e le classi personalizzati da uno spazio di lavoro R?
Un esempio in mostra il mio problema:
.myClass <- setClass("myClass", representation=representation(mySlot="numeric"))
mySlot <- function(x) [email protected]
setMethod("[", signature=c("myClass", "numeric", "missing"), function(x, i, j, ...) {
initialize(x, mySlot=mySlot(x)[i])
})
tenta di rimuovere il tutto con rm()
:
rm(list=ls(all.names=TRUE))
Tuttavia, la definizione della classe e metodo personalizzato sono ancora presenti:
> x <- new("myClass", mySlot=1:4)
> x[1]
Error in x[1] : could not find function "mySlot"
Dal momento che mySlot()
era un oggetto è stato rimosso con spirito h rm
, ma il metodo che fa riferimento a mySlot()
è rimasto. Mi piacerebbe sapere come rimuovere tutte le classi e tutti i metodi personalizzati in un colpo solo.
classi possono essere rimossi, AFAIK, con removeClass(). Tuttavia, non conosco un buon modo per automatizzarlo nel tuo caso. Se tu avessi una lista di nomi di classe, potresti iterarlo e rimuovere le classi con removeClass(). – ddiez