mtext Errore: impossibile trovare la funzione... in R




r plot subtitle (8)

Questo dovrebbe essere una domanda FAQ, quindi per favore sii il più completo possibile. La risposta è una risposta comunitaria, quindi sentiti libero di modificare se pensi che manchi qualcosa.

Questa domanda è stata discussa e approvata su meta.

Sto usando R e some.function provato some.function ma ho ricevuto questo messaggio di errore:

Error: could not find function `some.function`

Questa domanda appare molto regolarmente. Quando ottieni l' error: could not find function in R, come puoi risolverlo?


Ho avuto l'errore

Errore: impossibile trovare la funzione some.function

capita quando eseguo il controllo R CMD di un pacchetto che stavo creando con RStudio. Ho trovato l'aggiunta

exportPattern ( "")

al file NAMESPACE ha fatto il trucco. Come sidenote, avevo inizialmente configurato RStudio per utilizzare ROxygen per creare la documentazione e selezionato la configurazione in cui ROxygen avrebbe scritto per me il mio file NAMESPACE, che ha continuato a cancellare le mie modifiche. Quindi, nella mia istanza ho deselezionato NAMESPACE dalla configurazione di Roxygen e aggiunto exportPattern (".") A NAMESPACE per risolvere questo errore.


Potresti essere in grado di correggere questo errore per nome spaziatura :: la chiamata di funzione

comparison.cloud(colors = c("red", "green"), max.words = 100)

a

wordcloud::comparison.cloud(colors = c("red", "green"), max.words = 100)

Ci sono alcune cose che dovresti controllare:

  1. Hai scritto correttamente il nome della tua funzione? I nomi sono case sensitive.
  2. Hai installato il pacchetto che contiene la funzione? install.packages("thePackage") (questo deve essere fatto solo una volta)
  3. Hai collegato quel pacchetto allo spazio di lavoro? require(thePackage) o library(thePackage) (questo dovrebbe essere fatto ogni volta che si avvia una nuova sessione R)
  4. Stai usando una versione R più vecchia in cui questa funzione non esisteva ancora?

Se non sei sicuro in quale pacchetto si trova questa funzione, puoi fare alcune cose.

  1. Se sei sicuro di aver installato e caricato / caricato il pacchetto giusto, digita help.search("some.function") o ??some.function per ottenere una finestra di informazioni in grado di dirti in quale pacchetto è contenuto.
  2. find e getAnywhere possono anche essere utilizzati per individuare le funzioni.
  3. Se non hai idea del pacchetto, puoi utilizzare findFn nel pacchetto sos come spiegato in questa risposta .
  4. RSiteSearch("some.function") o la ricerca con rseek sono modi alternativi per trovare la funzione.

A volte è necessario utilizzare una versione precedente di R, ma eseguire il codice creato per una versione più recente. Quindi le nuove funzioni aggiunte (ad es. HasName in R 3.4.0) non saranno trovate. Se si utilizza una versione R precedente e si desidera utilizzare una funzione più recente, è possibile utilizzare i backports del pacchetto per rendere disponibili tali funzioni. Troverai anche un elenco di funzioni che devono essere ripristinate sul repository git dei backport . Tenere presente che le versioni R precedenti a R3.0.0 non sono compatibili con i pacchetti creati per R3.0.0 e versioni successive.


Un altro problema, in presenza di un NAMESPACE, è che si sta tentando di eseguire una funzione non esportata dal pacchetto pippo .

Ad esempio (inventato, lo so, ma):

> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"

In primo luogo, non dovresti chiamare direttamente i metodi S3, ma ipotizziamo che plot.prcomp sia in realtà una funzione interna utile nel pacchetto pippo . Chiamare tale funzione se sai cosa stai facendo richiede l'uso di ::: . È inoltre necessario conoscere lo spazio dei nomi in cui è stata trovata la funzione. Usando getAnywhere() troviamo che la funzione è nelle statistiche del pacchetto:

> getAnywhere(plot.prcomp)
A single object matching ‘plot.prcomp’ was found
It was found in the following places
  registered S3 method for plot from namespace stats
  namespace:stats
with value

function (x, main = deparse(substitute(x)), ...) 
screeplot.default(x, main = main, ...)
<environment: namespace:stats>

Quindi possiamo chiamarlo direttamente usando:

> stats:::plot.prcomp(mod)

Ho usato plot.prcomp solo come esempio per illustrare lo scopo. Nell'uso normale non dovresti chiamare metodi S3 come questo. Ma come ho detto, se la funzione che si desidera chiamare esiste (potrebbe essere una funzione di utilità nascosta per esempio), ma è in uno spazio dei nomi, R segnalerà che non può trovare la funzione a meno che non gli dica quale spazio dei nomi deve apparire in.


Ho avuto la stessa cosa, errore, stavo correndo la versione .99xxx, ho controllato gli aggiornamenti dal menu di aiuto e aggiornato My RStudio a 1.0x, quindi l'errore non è venuto

Soluzione così semplice, basta aggiornare il tuo R Studio


Rdocumentation.org ha una funzione di ricerca molto utile che - tra le altre cose - ti permette di trovare le funzioni - da tutti i pacchetti su CRAN, così come dai pacchetti di Bioconductor e GitHub.


Se ciò si verifica mentre controlli il pacco (controllo R CMD), dai un'occhiata al tuo NAMESPACE.

Puoi risolvere questo problema aggiungendo la seguente dichiarazione al NAMESPACE:

exportPattern("^[^\\\\.]")

Questo esporta tutto ciò che non inizia con un punto ("."). Questo ti permette di avere le tue funzioni nascoste, iniziando da un punto:

.myHiddenFunction <- function(x) cat("my hidden function")

Questo errore può verificarsi anche se il nome della funzione è valido se mancano alcuni argomenti obbligatori (ovvero non hai fornito argomenti sufficienti).
Ho ottenuto questo in un contesto Rcpp, in cui ho scritto una funzione C ++ con argomenti opzionali, e non ho fornito quegli argomenti in R. Sembrava che gli argomenti opzionali del C ++ fossero visti come obbligatori da R. Di conseguenza, R non ha trovato una funzione di corrispondenza per il nome corretto ma un numero errato di argomenti.

Funzione Rcpp: SEXP RcppFunction(arg1, arg2=0) {}
Chiamate R:
RcppFunction(0) genera l'errore
RcppFunction(0, 0) no







r-faq