2013-01-10 3 views
46

Wenn mit Daten arbeiten (z.B. in data.frame) die Benutzer Ziffern steuern können, die Anzeige vonWie wird die Anzahl der Dezimalstellen in der write.table() Ausgabe gesteuert?

Verwendung
options(digits=3) 

und Auflisten der data.frame wie diese.

ttf.all 

Wenn der Benutzer die Daten in Excell wie diese

write.table(ttf.all, 'clipboard', sep='\t',row.names=F) 

Die Ziffern Parameter ignoriert einfügen muss und Zahlen werden nicht aufgerundet.

Siehe schöne Ausgabe

> ttf.all 
    year V1.x.x V1.y.x ratio1 V1.x.y V1.y.y ratioR V1.x.x V1.y.x ratioAL V1.x.y V1.y.y ratioRL 
1 2006 227 645 35.2  67 645 10.4 150 645 23.3  53 645 8.22 
2 2007 639 1645 38.8 292 1645 17.8 384 1645 23.3 137 1645 8.33 
3 2008 1531 3150 48.6 982 3150 31.2 755 3150 24.0 235 3150 7.46 
4 2009 1625 3467 46.9 1026 3467 29.6 779 3467 22.5 222 3467 6.40 

Aber was ist in Excel (Zwischenablage) nicht abgerundet. Wie in write.table() steuern?

+10

Verwenden Sie 'round()' ... – Andrie

+2

Wenn ich richtig verstehe, müsste round() auf eine Reihe von Spalten angewendet werden, und ich müsste zähle diese auf. Die Zahl = 3 ist global und erfordert keine Spaltenaufzählung. so rund() ist keine perfekte Lösung. – userJT

Antwort

45

können Sie die Funktion format() wie in verwenden:

write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F) 

format() ist eine generische Funktion, einschließlich data.frames Methoden für viele Klassen hat. Im Gegensatz zu round() wird kein Fehler ausgegeben, wenn der Datenrahmen nicht numerisch ist. Weitere Informationen zu den Formatierungsoptionen finden Sie in der Hilfedatei über ?format

+3

Wenn ich sowohl "digits = 2" als auch "scientific = F" verwende, wird die Einstellung der Ziffern ignoriert. Es funktioniert gut, wenn ich wissenschaftlich erlaube. Irgendwelche Ideen? – jzadra

+0

Sehr geehrte @ Jzadra in meinem Fall, mit einem Datenrahmen von langen wissenschaftlichen Zahlen mit kleineren Zahlen gemischt, habe ich diese Optionen verwendet, um richtig in R-Nummern zu sehen, sowie Daten in csv-Datei richtig zu speichern, wie ich sie in R sehe: 'allgemeine R-Option: Optionen (scipen = 1, Ziffern = 8) und für write.table (Format (data_table, digits = 4, scientific = F)' –

+0

In gewisser Weise, indem man in der allgemeinen R-Umgebung die Anzahl der Dezimalstellen einstellt Ziffern, die angezeigt werden sollen, wird in write table Befehl übergeben, resultierende Zahlen ohne Dezimalzahlen! Daher müssen Sie die Dezimalziffern in write.table relativ erhöhen. –

Verwandte Themen