Fehlermeldungen in R verstehen und die fünf häufigsten selbst lösen
Du hast den Code aus dem Seminar übernommen, drückst auf Run und die Konsole antwortet in roter Schrift mit object 'alter' not found. Viele solcher Meldungen entstehen schon beim Einlesen der Daten, deshalb lohnt zuerst ein Blick darauf, wie du dein Arbeitsverzeichnis in RStudio anlegst und Daten importierst. Die gute Nachricht ist, dass R fast immer verrät, wo das Problem liegt.
So liest du eine Fehlermeldung
Eine Fehlermeldung in R beginnt mit Error. Danach nennt R in Klammern die Funktion, in der der Fehler auftrat. Hinter dem Doppelpunkt folgt die Beschreibung. Bei Error in mean(alter) weißt du also, dass der Aufruf von mean() gescheitert ist. Eine Warnung beginnt dagegen mit Warning message. Der Code läuft weiter, das Ergebnis kann aber trotzdem falsch sein.
Lies immer die letzte Meldung zuerst und kopiere sie wörtlich, wenn du danach suchst. Die meisten Fehler in Abschlussarbeiten gehören zu einer kleinen Gruppe von Meldungen, die die Tabelle 1 zeigt:
Meldung | Was R dir sagt | Typische Ursache |
object 'x' not found | R kennt kein Objekt mit diesem Namen | Tippfehler, Groß- und Kleinschreibung, Datensatz nicht geladen oder Variable ohne Datensatz angesprochen |
could not find function "x" | Die Funktion ist unbekannt | Paket nicht mit library() geladen |
there is no package called 'x' | Das Paket fehlt auf deinem Rechner | Paket noch nicht installiert |
cannot open file 'x' | Die Datei wurde nicht gefunden | falsches Arbeitsverzeichnis oder falscher Pfad |
non-numeric argument to binary operator | Es wird mit Text gerechnet | Variable als Text eingelesen, etwa wegen Komma als Dezimalzeichen |
Object not found und could not find function
Bei object not found lohnt zuerst der Blick auf die Schreibweise, denn R unterscheidet zwischen Alter und alter. Häufig liegt die Ursache aber woanders. Die Variable steckt in einem Datensatz, wird aber allein angesprochen:
mean(alter) # Fehler, R sucht ein eigenes Objekt alter
mean(daten$alter) # richtig, Variable aus dem Datensatz datenDie Meldung could not find function bedeutet, dass das Paket mit dieser Funktion in der aktuellen Sitzung nicht geladen ist. Pakete installierst du einmal, laden musst du sie nach jedem Neustart von R. Fehlt das Paket ganz, meldet R there is no package called. Dann hilft zuerst die Installation:
install.packages("psych") # einmal installieren
library(psych) # in jeder Sitzung ladenEine zweite Ursache sind gleichnamige Funktionen in verschiedenen Paketen. Lädst du später ein Paket, das eine Funktion mit demselben Namen enthält, überdeckt es die frühere. R weist darauf beim Laden mit dem Wort masked hin. Mit der Schreibweise paket::funktion() legst du eindeutig fest, welche Funktion gemeint ist.
Du kommst mit deinem R-Skript nicht weiter? Im 1:1-Statistikcoaching gehen wir deinen Code gemeinsam durch, damit du die Lösung verstehst und beim nächsten Mal selbst findest.
Wenn R deine Datei nicht findet
Die Meldung cannot open file heißt fast immer, dass R an einem anderen Ort sucht, als du denkst. Mit getwd() siehst du das aktuelle Arbeitsverzeichnis. Ein Projekt in RStudio setzt es automatisch auf den Projektordner, was viele Pfadprobleme von vornherein vermeidet. Wie das funktioniert, zeigt die Einführung in RStudio.
Bei Dateien aus einem deutschen Excel kommt eine Besonderheit dazu. Sie trennen Spalten oft mit Semikolon und nutzen das Komma als Dezimalzeichen. Liest du sie mit read.csv() ein, landet alles in einer Spalte oder Zahlen werden zu Text. Für dieses Format ist read.csv2() gedacht.
Wenn mit Text gerechnet wird
Die Meldung non-numeric argument to binary operator erscheint, wenn du etwa addierst oder teilst und eine der Variablen als Text gespeichert ist. Mit str(daten) siehst du für jede Variable den Typ. Steht dort chr statt num, wurde die Variable nicht als Zahl erkannt.
Wandelst du sie mit as.numeric() um, erscheint oft die Warnung NAs introduced by coercion. Sie ist ernst zu nehmen, denn alle Werte, die R nicht lesen konnte, sind jetzt fehlend. Zähle vorher und nachher die fehlenden Werte und prüfe, woher sie kommen. Was du mit ihnen machen darfst, steht im Beitrag zu fehlenden Werten und Ausreißern.
Nach der Korrektur weiterrechnen
Läuft der Code wieder, lohnt ein Blick auf die Voreinstellungen. Die Funktion t.test() rechnet ohne weitere Angabe den Welch-Test und nicht den klassischen t-Test mit gleichen Varianzen. Das ist meist sinnvoll, muss aber im Methodenteil stehen. Mehr dazu findest du im Beitrag zum t-Test für unabhängige Stichproben in RStudio. So könnte das Ergebnis mit erfundenen Werten aussehen:
Studierende, die vor der Prüfung ein Probeexamen geschrieben hatten, erreichten mehr Punkte (M = 71.40, SD = 9.80) als Studierende ohne Probeexamen (M = 65.90, SD = 11.20), t(73.51) = 2.30, p = .024, d = 0.52.
Für den Methodenteil hilft sessionInfo(). Die Funktion zeigt die R-Version und alle geladenen Pakete mit ihren Versionen. Wie du R und Pakete im Literaturverzeichnis angibst, erklärt der Beitrag Software zitieren nach APA 7.
Wenn die Meldung nicht weiterhilft
Meldungen wie unexpected symbol deuten auf ein Tippproblem hin, etwa ein fehlendes Komma oder eine offene Klammer in der Zeile davor. Hilfreich ist dann ein Neustart von R mit schrittweisem Ausführen des Skripts von oben. So siehst du, welche Zeile den ersten Fehler wirft. Stammt der fehlerhafte Teil nicht von dir, solltest du verstehen, was er tut, bevor du ihn in deiner Arbeit verwendest.
Fehler in komplexeren Analysen wie der einfaktoriellen ANOVA in RStudio haben oft dieselben Ursachen. Ist die Gruppenvariable als Zahl gespeichert, rechnet R eine Regression statt eines Gruppenvergleichs. Das erzeugt keine Fehlermeldung, aber falsche Freiheitsgrade. Auch hier hilft ein Blick mit str() auf die Datentypen.
Häufige Fragen zu Fehlermeldungen in R
Warum unterscheidet R zwischen Groß- und Kleinschreibung?
R behandelt Namen als genaue Zeichenfolgen, Alter und alter sind deshalb zwei verschiedene Objekte. Einheitliche Namen in Kleinschreibung ohne Leerzeichen ersparen dir viele Fehler.
Muss ich Pakete jedes Mal neu installieren?
Nein, installiert wird ein Paket nur einmal pro Rechner und R-Version. Laden musst du es mit library() in jeder neuen Sitzung, am besten ganz oben im Skript.
Kann ich Warnungen einfach ignorieren?
Nein, prüfe jede Warnung. Viele sind harmlos, manche zeigen aber an, dass Werte verloren gegangen sind oder ein Modell nicht sauber geschätzt wurde. Im Zweifel gehört die Warnung samt deinem Umgang damit in die Dokumentation.
Was kostet Unterstützung bei meinem R-Skript?
Der Aufwand hängt davon ab, wie umfangreich dein Skript ist und ob es um einzelne Fehler oder die ganze Auswertung geht. Wovon die Kosten abhängen, erklärt der Beitrag Was kostet eine statistische Auswertung.
Darf ich Code aus Foren übernehmen?
Das hängt von Hochschule und Betreuung ab. In der Regel ist es erlaubt, solange du den Code verstehst und die verwendeten Pakete angibst. Wie du Pakete zitierst, zeigt der Beitrag Software zitieren nach APA 7.
R-Skript gemeinsam durchgehen Im 1:1-Statistikcoaching gehen wir dein Skript Zeile für Zeile mit dir durch und klären, warum ein Fehler auftritt und wie du ihn behebst. Möchtest du lieber die ganze Auswertung abgeben, rechnen wir sie für dich und erklären dir die Ergebnisse im Abschlussgespräch.



