Come smascherare una funzione in R, a causa delle collisioni del nome sul percorso di ricerca
-
15-09-2020 - |
Domanda
Quando ho caricato il pacchetto debug
per eseguire il debug di uno script con oggetti zoo
, ho problemi: funzione index
da zoo
è stata mascherata dal pacchetto debug
.Come posso smascherare index
?In generale, come affrontare questi nomi di collisione dei problemi?Non usiamo solo il pacchetto debug
con `zoo '?
Soluzione
I simboli esportati sono sempre identificabili con l'operatore ::
:
zoo::index
.
Le funzioni nascoste non hanno dichiarato che nello spazio dei nomi possono ancora essere accessibili utilizzando :::
(Triple-Colon), ed esempio sarebbe
zoo:::.onLoad
.
che puoi vedere anche se non viene esportato.
Altri suggerimenti
È possibile scaricare il pacchetto che ha funzioni mascherato e quindi ricaricarlo.Ritroverà la precedenza nel percorso di ricerca:
unloadNamespace("zoo")
library("zoo")
.
In futuro, se si desidera caricare un pacchetto, evitandolo di mascherare altre funzioni, è possibile specificare la sua posizione nel percorso di ricerca con un numero elevato arbitrario:
library("debug", pos = .Machine$integer.max)
. è solo mascherato a te ma non è mascherato allo zoo, quindi quando una funzione zoo cerca di utilizzare l'indice, troverà ancora il proprio indice.
Zoo ha anche un metodo Time.Zoo Quindi se Z è un oggetto Zoo puoi usare il tempo (Z) al posto dell'indice (Z).
Alla fine puoi sempre fare riferimento allo zoo :: indice per assicurarti di ottenere quello in zoo.