Überprüfen Sie dieses Beispiel:
> a = matrix(1:9, nrow = 3, ncol = 3, dimnames = list(LETTERS[1:3], LETTERS[1:3]))
> a
A B C
A 1 4 7
B 2 5 8
C 3 6 9
Die Tabelle wird korrekt angezeigt. Es gibt zwei verschiedene Möglichkeiten, es in eine Datei zu schreiben ...
write.csv(a, 'a.csv')
was wie erwartet gibt:
"","A","B","C"
"A",1,4,7
"B",2,5,8
"C",3,6,9
und write.table(a, 'a.txt')
was vermasselt
"A" "B" "C"
"A" 1 4 7
"B" 2 5 8
"C" 3 6 9
in der Tat fehlt eine leere Lasche ... was für nachgeschaltete Dinge ein Schmerz im Hintern ist. Ist das ein Fehler oder eine Funktion? Gibt es eine Problemumgehung? (anders als write.table(cbind(rownames(a), a), 'a.txt', row.names=FALSE
)
Prost, Yannick
quelle
Eine geringfügige Änderung an der sehr hilfreichen Antwort von @Marek fügt der Spalte "Rownames" einen Header hinzu: Fügen Sie die Rownames vorübergehend als erste Spalte im data.frame hinzu und schreiben Sie diese, wobei Sie die tatsächlichen Rownames ignorieren.
und du bekommst
quelle
Für alle, die in der tidyverse arbeiten (dplyr usw.), kann die
rownames_to_column()
Funktion aus dem tibble- Paket verwendet werden, um row.names einfach in eine Spalte zu konvertieren, z.Wenn Sie dies mit der
row.names=FALSE
Option inwrite.table()
kombinieren, erhalten Sie eine Ausgabe mit Kopfzeilennamen für alle Spalten.quelle
Für diejenigen, die das gleiche Problem beim Speichern einer Matrix mit haben
write.table()
und die Spalte row.names beibehalten möchten, gibt es tatsächlich eine äußerst einfache Lösung:Auf diese Weise bringen Sie die
write.table
Funktion dazu, eine Kopfzeilenbezeichnung für die Spalte row.names zu erstellen. Die resultierende CSV-Datei würde folgendermaßen aussehen:quelle
write.table
Erwarten Sie einen Header mit einer Längencol(matrix)
und Sie geben ihm noch einen. Ich habe die obige Lösung ausprobiert, sie funktioniert nicht. Am besten verschieben Sie die Rownamen wie in anderen Lösungen als SpalteIch habe eine einfache Funktion von @mnel überarbeitet, die durch die Verwendung von Verbindungen mehr Flexibilität bietet. Hier ist die Funktion:
Sie können die Funktion 'write.table', 'write.csv', 'write.delim' usw. angeben.
Prost!
quelle