2015-01-11 17 views

risposta

20

L'errore indica che R non ha trovato la variabile menzionata nel messaggio di errore.

Il modo più semplice per riprodurre l'errore è digitare il nome di una variabile che non esiste. (Se avete definito x già, utilizzare un nome di variabile diverso.)

x 
## Error: object 'x' not found 

La versione più complessa dell'errore ha la stessa causa: chiamare una funzione quando x non esiste.

mean(x) 
## Error in mean(x) : 
## error in evaluating the argument 'x' in selecting a method for function 'mean': Error: object 'x' not found 

Una volta definita la variabile, l'errore non si verificherà.

x <- 1:5 
x 
## [1] 1 2 3 4 5  
mean(x) 
## [1] 3 

È possibile controllare per vedere se un variabile esiste utilizzando ls o exists.

ls()  # lists all the variables that have been defined 
exists("x") # returns TRUE or FALSE, depending upon whether x has been defined. 

errori come questo può verificarsi quando si utilizza la valutazione non standard. Ad esempio, quando si utilizza subset, l'errore si verifica se il nome di una colonna non è presente nel frame di dati come sottoinsieme.

d <- data.frame(a = rnorm(5)) 
subset(d, b > 0) 
## Error in eval(expr, envir, enclos) : object 'b' not found 

L'errore può verificarsi anche se si utilizza la valutazione personalizzata.

get("var", "package:stats") #returns the var function 
get("var", "package:utils") 
## Error in get("var", "package:utils") : object 'var' not found 

Nel secondo caso, la funzione var non può essere trovato quando R guarda nell'ambiente pacchetto di utils perché utils è più in basso nella lista search di stats.


In altri casi d'uso avanzate, si potrebbe desiderare di leggere:

+0

ho cercato di usare esiste ("x"), ma questo genera un errore se x è NULL: 'Errore in esiste (x): primo argomento non valido'. is.null (x) può testarlo, ma quel test genera un errore se x non viene trovato: 'Errore: oggetto 'x' non trovato '. Prendi il 22? –

+0

@ R.Schreurs 'x <- NULL; exists ("x") 'restituisce' TRUE'. Penso che tu abbia un problema diverso. –

+0

Hai ragione. Suppongo ora di non aver citato 'x' nella mia chiamata:' exists (x) 'avrebbe dovuto essere' exists ("x") '. –

3

Discutiamo perché un errore "oggetto non trovato" può essere gettato in R oltre a spiegare cosa significa. Ciò che significa (per molti) è ovvio: la variabile in questione, almeno secondo l'interprete R, non è stata ancora definita, ma se vedi il tuo oggetto nel tuo codice ci possono essere molteplici ragioni per cui ciò sta accadendo:

  1. controllare la sintassi delle dichiarazioni.Se digitate male anche una sola lettera o usate maiuscole e minuscole in un'istruzione di chiamata successiva, allora non corrisponderà alla vostra dichiarazione originale e questo errore si verificherà.

  2. Si verifica questo errore in un blocco note o in un documento di markdown? Potrebbe essere semplicemente necessario rieseguire una cella precedente contenente le dichiarazioni prima di eseguire la cella corrente in cui si sta chiamando la variabile.

  3. Stai cercando di lavorare a maglia il tuo documento R e la variabile funziona quando si eseguono le celle ma non quando si lavorano le celle? Se è così - poi si desidera esaminare il frammento di sto fornendo di seguito per un possibile effetto collaterale che fa scattare questo errore:

    {r sourceDataProb1, echo=F, eval=F} # some code here

È possibile che questo frammento è fin dal principio di una cella R Markdown. Se eval ed echo sono entrambi impostati su False, questo può generare un errore quando si tenta di creare un documento. Chiarire. Avevo un caso d'uso in cui avevo lasciato questi flag come False perché pensavo che non volevo che il mio codice riecheggiasse o che i risultati venissero visualizzati nel markdown HTML che stavo generando. Ma poiché la variabile è stata quindi utilizzata nelle celle successive, ciò ha causato un errore durante la lavorazione a maglia. Semplici tentativi ed errori con i flag T/F TRUE/FALSE possono stabilire se questa è la fonte del tuo errore quando si verifica durante la lavorazione di un documento R markdown da RStudio.

Infine: è stata rimossa la variabile o cancellata dalla memoria dopo averla dichiarata?

  • rm() rimuove la variabile
  • colpire l'icona scopa nella finestra evironment di RStudio clearls tutto l'ambiente di lavoro corrente
  • ls() può aiutare a vedere ciò che è attiva in questo momento di cercare una dichiarazione mancante.
  • esiste ("x") - come detto da un altro poster, può aiutare a testare un valore specifico in un ambiente con una lunga lista di variabili attive