Drucken Sie ein Daten-frame mit den Spalten ausgerichtet werden (siehe R)
Habe ich die folgenden Daten-frame in R:
> dframe
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
Will ich drucken Sie in eine Datei und halten Sie es schön formatiert und ausgerichtet, so wie oben gezeigt. Ich benutze:
write.table(dframe,file="test",sep="\t", quote=F)
erzeugt die folgende Ausgabe:
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
Da die Daten richtig angezeigt wird formatiert in die R-Umgebung, die ich dachte, es sollte trivial sein zu schreiben Sie es in eine Datei mit dem gleichen format. Anscheinend war ich falsch. Ich habe versucht das Spiel mit format()
und write.matrix
aus der MASSE Bibliothek, aber weder erzeugt das gewünschte Ergebnis.
Habe ich einige Vorschläge, wie diese eine, aber es scheint zu kompliziert und vor allem nicht zu dem gewünschten Ergebnis beim drucken in eine Datei mit write.table()
.
So, wie Drucke ich meine Daten-frame in eine Textdatei und haben es einfach Aussehen, wie es auch in R?
UPDATE
Folgende Justin ' s Vorschlag in seinem Kommentar unten, ich installierte gdata-Bibliothek und verwendet werden write.fwf
. Dies ist fast, was ich brauche:
write.fwf(dframe,file="test",sep="\t", quote=F, rownames=T)
erzeugt die folgende Ausgabe:
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
So, irgendwelche Ideen auf, wie man "Mean" und "Median" nach rechts verschoben, so dass Sie richten Sie mit den jeweiligen Spalten?
Da kann es nun wichtig sein, hier ist, wie die Daten.Bild wurde erstellt:
labels<-c("Candidates","NonCands","Multi", "Mono", "Multi NonCands")
Mean <- c(mean(cands), mean(non),mean(multi),mean(mono),mean(multi_non))
Median <- c(median(cands), median(non),median(multi),median(mono),median(multi_non))
names(Mean)<-labels
dframe<-data.frame(Mean,Median)
- werfen Sie einen Blick auf
write.fwf
von dergdata
Paket.fwf
steht für fixed-width-Datei. allerdings, wenn Sie die schriftart zur Anzeige von text-Datei, die nicht mit fester Breite, es könnte nicht noch. - danke, finden Sie in den aktualisierten Frage.
- Um genau zu sein, Sie wollen die rownames Links ausgerichtet und gepolstert, und die Spalten rechts ausgerichtet. (
print.data.frame(... right=X)
nur erlaubt, die option zu Global festgelegt werden, so dass ein wenig Feintuning nötig).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man umleiten der Ausgabe von
print
Datei.getOption("max.print")
Problem, wenn die Anzahl der Zeilen, die größer sind alsmax.print
Wert.Könnten Sie auch
capture.output
mitcat
capture.output
dauertfile
parameter selbst zu.Einen anderen Weg ohne Zeile Namen auf der Grundlage der Antwort von mnel:
Zur Steuerung der Ausgabe, tune
print.data.frame
auf Ihre Bedürfnisse ein und erfassen Sie die Ausgabe in eine Datei, zB.:Ich mochte die Einfachheit der Antwort von Matthew Plourde, aber leider funktioniert es nicht bieten einen Weg, um loszuwerden, die Reihe von Namen/Nummern für meine situation; so, ich veränderte ein wenig die Antwort von Ricardo:
Ergibt die gleiche Ausgabe von Matthäus außer der Reihe von Namen/Telefonnummern.
EDIT: ersetzen
trim
mittrimws
.Error in trim(d[, i]) : could not find function "trim"