Ich versuche, eine CSV-Datei in R zu lesen und diese Formel zu verwenden:
pheasant<-read.table(file.choose(),header=TRUE,sep=",")
Ich erhalte diese Warnmeldung:
"incomplete final line found by readTableHeader on 'C:\Documents and Settings..."
Es gibt ein paar Dinge, von denen ich dachte, dass sie diese Warnung verursacht haben könnten, aber leider weiß ich nicht genug über R, um das Problem selbst zu diagnostizieren, also dachte ich, ich würde hier posten, in der Hoffnung, dass jemand anderes es für mich diagnostizieren kann!
- Die CSV-Datei war ursprünglich eine Excel-Datei, die ich im CSV-Format gespeichert habe
- Die Datei enthält drei Datenspalten
- Jede Datenspalte hat eine unterschiedliche Länge, dh es gibt eine unterschiedliche Anzahl von Werten in jeder Spalte
- Ich möchte die Mittelwerte (unter Verwendung eines t-Tests oder eines Äquivalents in Abhängigkeit von der Normal- / Nicht-Normalverteilung) von zwei Spalten gleichzeitig vergleichen, also zum Beispiel einen t-Test zwischen den Werten von Spalte 1 und den Werten von Spalte 2, dann einen t- Test der Werte von Spalte 1 und Spalte 3 usw.
Jede Hilfe oder Anregungen wäre sehr dankbar!
r
line-endings
read.csv
Kate
quelle
quelle
Antworten:
Die Nachricht zeigt an, dass die letzte Zeile der Datei nicht mit einem EOL-Zeichen (Line Of Feed) (Zeilenvorschub (
\n
) oder Wagenrücklauf + Zeilenvorschub (\r\n
)) endet . Die ursprüngliche Absicht dieser Nachricht war es, Sie zu warnen, dass die Datei möglicherweise unvollständig ist. Die meisten Datendateien haben ein EOL-Zeichen als letztes Zeichen in der Datei.Das Mittel ist einfach:
quelle
Das Problem ist leicht zu lösen. Es ist, weil die letzte Zeile leer sein muss.
Sagen Sie, wenn Ihr Inhalt ist
ändere es auf
Heute bin ich auf dieses Problem gestoßen, als ich versucht habe, mit R eine JSON-Datei zu lesen, indem ich den folgenden Befehl verwendet habe:
json_data<-fromJSON(paste(readLines("json01.json"), collapse=""))
;; und ich löse es durch meine obige Methode.
quelle
Warning message: In readLines(file) : incomplete final line found on 'apiAnaheim.R'
Die Warnung wurde behoben, indem am Ende eine leere Zeile hinzugefügt wurde. Ich bin mir nicht sicher, warum das passiert.Sind Sie wirklich sicher, dass Sie die CSV-Datei und nicht die XLS-Datei ausgewählt haben? Ich kann den Fehler nur reproduzieren, wenn ich versuche, eine XLS-Datei einzulesen. Wenn ich versuche, eine CSV-Datei oder eine andere Textdatei einzulesen, kann der erhaltene Fehler nicht wiederhergestellt werden.
readTableHead
ist die c-Funktion, die den Fehler ausgibt. Es wird versucht, die ersten n Zeilen einzulesen (standardmäßig die ersten 5), um den Datentyp zu bestimmen. Der Rest der Daten wird mit eingelesenscan()
. Das Problem ist also das Format der Datei.Eine Möglichkeit, dies herauszufinden, besteht darin, das Arbeitsverzeichnis auf das Verzeichnis festzulegen, in dem sich die Datei befindet. Auf diese Weise sehen Sie die Erweiterung der Datei, die Sie eingelesen haben. Ich weiß, dass sie unter Windows nicht als Standard angezeigt wird. Sie könnten also glauben, dass es sich um CSV handelt, obwohl dies nicht der Fall ist.
Als nächstes sollten Sie die Datei in Notepad oder Wordpad (oder einem anderen Editor) öffnen und überprüfen, ob das Format meiner Datei entspricht
test.csv
:Diese Datei gibt Ihnen den folgenden Datenrahmen:
Das von Excel gespeicherte CSV-Format trennt alle Zellen durch ein Komma. Leere Zellen haben einfach keinen Wert.
read.table()
kann leicht damit umgehen und erkennt leere Zellen ganz gut.quelle
Verwenden Sie
readLines()
(mitwarn = FALSE
), um die Datei zuerst in einen Zeichenvektor einzulesen.Verwenden Sie danach die
text =
Option, um den Vektor mit in einen Datenrahmen einzulesenread.table()
quelle
Mir wurde klar, dass mehrere Antworten gegeben wurden, aber noch keine wirkliche Lösung.
Der Grund ist, wie oben erwähnt, ein "Zeilenende", das am Ende der CSV-Datei fehlt.
Während der eigentliche Fix von Microsoft stammen sollte, müssen Sie die CSV-Datei mit einem Texteditor öffnen und am Ende der Datei eine Zeile einfügen (auch bekannt als Eingabetaste). Ich verwende die ATOM-Software als Text- / Code-Editor, aber praktisch alle grundlegenden Texteditoren würden dies tun.
In der Zwischenzeit melden Sie den Fehler bitte an Microsoft.
Frage: Es scheint mir, dass es sich um ein Office 2016-Problem handelt. Hat jemand das Problem auf einem PC?
quelle
Ich habe die gleiche Nachricht erhalten. Mein Fix beinhaltete: Ich habe alle zusätzlichen Blätter (Registerkarten) in der CSV-Datei gelöscht, nicht numerische Zeichen entfernt, die Datei als durch Kommas getrennt gespeichert und in R v 2.15.0 in der Standardsprache geladen:
Als zusätzlichen Schutz habe ich die Software geschlossen und erneut geöffnet, bevor ich die CSV geladen habe.
quelle
In verschiedenen europäischen Ländereinstellungen sollte stattdessen die Funktion read.csv2 verwendet werden, da das Komma als Dezimalpunkt dient.
quelle
Ich habe dieses Problem durch Ändern der Codierung im Argument read.table von fileEncoding = "UTF-16" in fileEncoding = "UTF-8" gelöst.
quelle
Das von Ihnen beschriebene Problem trat bei mir auf, als ich ein
.xlsx
als umbenannte.csv
.Was es für mich behoben hat, war "Speichern unter" und es dann wieder als zu speichern
.csv
.quelle
Ich habe dieses Problem einmal bekommen, als ich ein einfaches Anführungszeichen als Teil der Kopfzeile hatte. Als ich es entfernte (dh den jeweiligen Spaltenkopf von
Jimmy's data
in umbenannteJimmys data
), gab die Funktion keine Warnungen zurück.quelle
Um dieses Problem durch R selbst zu beheben, habe ich nur
read.xlsx(..)
anstelle von a verwendetread.csv()
. Klappt wunderbar!! Sie müssen nicht einmal umbenennen. Das Umbenennen eines xlsx in csv ist keine praktikable Lösung.quelle
Öffnen Sie die Datei in Text Wrangler oder Notepad ++ und zeigen Sie die Formatierung an, z. B. in Text Wrangler zeigen Sie Unsichtbare an. Auf diese Weise können Sie die neuen Zeilen- oder Tabulatorzeichen sehen. Oft fügt Excel alle Arten von Tabulatoren an den falschen Stellen hinzu und nicht das letzte neue Zeilenzeichen. Sie müssen jedoch die Symbole anzeigen, um dies zu sehen.
quelle
Meine Problemumgehung bestand darin, dass ich die
csv
Datei in einem Texteditor öffnete , die übermäßigen Kommas für den letzten Wert entfernte und die Datei dann speicherte. Zum Beispiel für die folgende DateiEntfernen Sie die Kommas nach 6 und speichern Sie die Datei.
quelle
Ich habe ein ähnliches Problem festgestellt, dies scheint jedoch eine allgemeine Warnung zu sein und hängt möglicherweise nicht mit dem Zeilenendezeichen zusammen. In meinem Fall gab es diesen Fehler, weil die von mir verwendete Datei kyrillische Zeichen enthielt. Nachdem ich sie durch lateinische Zeichen ersetzt hatte, verschwand der Fehler.
quelle
Ich habe versucht , verschiedene Lösungen, wie mit einem Texteditor eine neue Zeile einzufügen und das bekommt End Of Line Zeichen wie oben in der Top-Antwort empfohlen. Nichts davon hat leider funktioniert.
Die Lösung, die schließlich für mich funktioniert hat, war sehr einfach: Ich habe den Inhalt einer CSV-Datei in eine neue leere CSV-Datei kopiert, gespeichert und das Problem war behoben.
quelle