2017-06-09 1 views
1

In r standardmäßig die print method scheint rechts von der Dezimalstelle mit extra 0s Ziffernbedruckung aufzufüllen, so dass alle der Zahlen mit der gleichen Anzahl von Dezimalstellen angezeigt werden, die der maximalen Anzahl von Dezimalstellen übereinstimmt.Ist es möglich, Numerische Zeichen nicht mit 0s zu füllen, wenn in r gedruckt wird?

Zum Beispiel

a <- c(5, 3.25, 7.9999) 
b <- c(5.1, 3.2, 8.3) 
data.frame(a, b) 

ergibt

 a b 
1 5.0000 5.1 
2 3.2500 3.2 
3 7.9999 8.3 

Ich weiß, ich options können Sie die maximale Anzahl von Stellen ändern, aber das wird nur die Anzahl der 0er ändern hinzugefügt. Ich möchte sie nicht in Charaktere umwandeln, weil ich später gerne mit den Zahlen arbeiten würde. Ich möchte nur die Werte so ausgeben, wie sie tatsächlich im Datenrahmen (oder anderen) Objekt gespeichert sind.

Gibt es eine Möglichkeit, das zu tun?

Hinweis: Dies entspricht nicht der Frage, wie Sie eine feste Anzahl von Ziffern entweder allgemein oder dynamisch festlegen können. Die vorgeschlagenen doppelten Fragen betreffen dieses Problem.

Antwort

1

Statt eine vector schaffen, können wir sie speichern in list und das wird die Ziffern wie in der ursprünglichen

list(5, 3.25, 7.9999) 
#[[1]] 
#[1] 5 

#[[2]] 
#[1] 3.25 

#[[3]] 
#[1] 7.9999 

Wenn wir wirklich brauchen eine data.frame

data.frame(a = I(list(5, 3.25, 7.9999)), b = I(list(5.1, 3.2, 8.3))) 
#  a b 
#1  5 5.1 
#2 3.25 3.2 
#3 7.9999 8.3 
+1

Schön @akrun getan erhalten! – Elin

+0

Hmmm. Ich bin nicht überzeugt, dass die Elemente dieses Datenrahmens immer noch numerisch sind. Möglicherweise müssen Sie double [[]] verwenden, um numerisches Verhalten zu erhalten. – user20637

+0

@ user20637 Es ist eine Listenspalte im 'data.frame'. Wenn wir überprüfen Sie die '' str' dh str (data.frame (a = I (Liste (5, 3,25, 7,9999)), b = I (Liste (5.1, 3.2, 8,3)))) # ‚data.frame ': 3 obs. von 2 Variablen: $ a: Liste von 3 .. $: num 5 .. $: num 3,25 .. $: num 8' – akrun

Verwandte Themen