2015-01-11 23 views

Odpowiedz

20

Błąd oznacza, że ​​R nie może znaleźć zmiennej wymienionej w komunikacie o błędzie.

Najprostszym sposobem na odtworzenie błędu jest wpisanie nazwy zmiennej, która nie istnieje. (Jeśli zdefiniowano x już używać innej nazwy zmiennej.)

x 
## Error: object 'x' not found 

Im bardziej skomplikowana wersja tego błędu ma tę samą przyczynę: Wywołanie funkcji kiedy x nie istnieje.

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

Po zdefiniowaniu zmiennej błąd nie wystąpi.

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

Można sprawdzić, czy zmienna istnieje używając ls lub exists.

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

Błędy takie jak ten może wystąpić, gdy używasz niestandardowego ocenę. Na przykład przy korzystaniu z subset błąd wystąpi, jeśli nazwa kolumny nie występuje w ramce danych do podzbioru.

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

Błąd może również wystąpić w przypadku korzystania ocenę niestandardową.

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

W drugim przypadku, funkcja var nie można znaleźć, gdy R wygląda w otoczeniu danego pakietu utils ponieważ utils jest dalej w dół listy search niż stats.


W bardziej zaawansowanych przypadkach, może chcesz przeczytać:

+0

Próbuję użyć istnieje („X”), ale to powoduje błąd, jeśli x ma wartość NULL: 'Błąd w istnieniu (x): niepoprawny pierwszy argument'. is.null (x) może to sprawdzić, ale test ten zgłasza błąd, jeśli x nie zostanie odnalezione: 'Błąd: obiekt 'x' nie znaleziony'. Złap 22? –

+0

@ R.Schreurs 'x <- NULL; istnieje ("x") 'zwraca' TRUE'. Myślę, że masz inny problem. –

+0

Masz rację. Teraz zakładam, że nie cytowałem "x" w moim wywołaniu: 'exists (x)' powinno być 'exists (" x ")'. –

3

Porozmawiajmy dlaczego "nie znaleziono obiektu" błąd może być rzucone w R oprócz wyjaśnienia, co to znaczy. Znaczenie (dla wielu) jest oczywiste: zmienna, o której mowa, przynajmniej według interpretera R, nie została jeszcze zdefiniowana, ale jeśli widzisz swój obiekt w kodzie, może być wiele przyczyn, dla których tak się dzieje:

  1. sprawdź składnię swoich deklaracji.Jeśli błędnie wpiszesz jedną literę lub użyjesz wielkiej litery zamiast małej w instrukcji późniejszego wywoływania, to nie będzie to zgodne z oryginalną deklaracją i ten błąd wystąpi.

  2. Czy otrzymujesz ten błąd w notatniku lub skróconym dokumencie? Możesz po prostu ponownie uruchomić wcześniejszą komórkę, która ma twoje deklaracje przed uruchomieniem bieżącej komórki, do której wywołujesz zmienną.

  3. Czy próbujesz zrobić na drutach dokument R, a zmienna działa, gdy uruchamiasz komórki, ale nie podczas łączenia komórek? Jeśli tak - to chcesz zbadać fragment przytaczam poniżej możliwego efektu ubocznego, który wywołuje ten błąd:

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

Powyższy fragment pochodzi z początku komórki R wyprzedaży. Jeśli eval i echo są ustawione na False, może to spowodować błąd podczas próby zszycia dokumentu. W celu wyjaśnienia. Miałem przypadek użycia, w którym pozostawiłem te flagi jako fałszywe, ponieważ uważałem, że nie chcę, aby mój kod był odbijany lub jego wyniki były pokazywane w kodzie HTML, który generowałem. Ale ponieważ zmienna była następnie używana w późniejszych komórkach, spowodowało to błąd podczas dziania. Prosta próba i błąd z flagami T/F TRUE/FALSE mogą ustalić, czy jest to źródło twojego błędu, gdy występuje w procesie dziania dokumentu R Markdown z RStudio.

Na koniec: czy usunąłeś zmienną lub usunąłeś ją z pamięci po jej zadeklarowaniu?

  • rm() usuwa zmienną
  • uderzania ikonę miotła w oknie środowiskową z RStudio clearls wszystko w bieżącym środowisku pracy
  • ls() może pomóc zobaczyć, co działa teraz szukać brakujące oświadczenie.
  • istnieje („x”) - jak wspomniano przez inny plakat, może pomóc sprawdzić konkretną wartość w środowisku z bardzo długiej listy zmiennych aktywnych