2012-07-27 15 views
7

Eventuali duplicati:
Masked functions in R
R: Masked Functions
function naming conflictsDue funzioni con lo stesso nome in R

Se ho due pacchetti: A e B. dire che non c'è funzione denominata funfun in A e c'è anche la funzione denominata funfun in B. Quando carico A e B, come faccio a usare il primo funfun?

require(A) 
require(B) 

Se voglio usare funfun in A, come faccio a scrivere questo?

+1

Alcuni quasi duplicati: http://stackoverflow.com/questions/2842120/masked-functions-in-r, http://stackoverflow.com/questions/4879377/r-masked- funzioni, http://stackoverflow.com/questions/9337716/how-do-i-use-functions-in-one-r-package-masked-by-another-package – Andrie

risposta

10

È explictily possibile fare riferimento ad una combinazione pacchetto e funzione come questa:

A::funfun 
B::funfun 

In circostanze insolite, potrebbe essere necessario fare riferimento a funzioni che non vengono esportati nello spazio dei nomi, nel qual caso si necessario utilizzare:

A:::funfun 
B:::funfun 

(Ma questo sarebbe insolito, e poiché le funzioni non esportato non fanno parte del pacchetto API, queste funzioni può cambiare senza preavviso in subs versioni equivalenti di un pacchetto.)

+2

Se la funzione viene esportata, potrebbe essere sufficiente usa '::'. –

+3

+1 Strettamente parlando, ':::' consente l'accesso alle funzioni che non vengono esportate nello spazio dei nomi del pacchetto - questo non è qualcosa che la maggior parte degli utenti dovrebbe fare. Dal momento che penso che sia più appropriato usare '::' Ho modificato la risposta. – Andrie

Problemi correlati