2016-04-21 5 views
2

Ich versuche, eine Tabelle mit pander in einer .rmd Datei als pdf mit 2 Stellen nach dem Komma ausgeben, aber ich bekomme keine Ziffern folgendes rmd mit:pander Anzahl der Stellen hinter dem Komma

--- 
title: "Long table test" 
output: pdf_document 
--- 

Here is a table: 

```{r setup} 
library (data.table) 
library (pander) 

set.seed(1984) 
longString <- "description string" 
dt <- data.table(id=c(1:3),description=rep(longString,3),value=rnorm(3,mean=10000,sd=1)) 
``` 

```{r pander-table} 
panderOptions('round',2) 
panderOptions('digits',2) 
panderOptions('keep.trailing.zeros',TRUE) 
pander(dt, split.cell = 80, split.table = Inf) 
``` 

Ergebnisse in

------------------------------- 
id  description  value 
---- ------------------ ------- 
1 description string 10000 

2 description string 10000 

3 description string 10001 
------------------------------- 

möchten

---------------------------------- 
id  description  value 
---- ------------------ ---------- 
1 description string 10000.41 

2 description string 9999.68 

3 description string 10000.64 
---------------------------------- 
+0

Meine erste Änderung wäre, die Ziffern Option fallen zu lassen. Wenn es mit der Funktion signif in R verknüpft ist, würde es den Effekt haben, den Sie sehen: "signifif (mean (rnorm (1000,1000)), 2)' returns '[1] 1000'. Und 'signif (Mittelwert (rnorm (10,1000, 200)), 2)' returns '[1] 990' –

+0

Erhöhe' digits' auf 7. – daroczig

+0

Die Einstellung der Ziffern auf 7 ergibt '9999.677' (dh 3 Ziffern nach Dezimalstelle) oder '10000.64'. Wenn ich Ziffern auf 7 setze und auf 2 'panderOptions ('Ziffern', 7) richte; panderOptions ('rund', 2) 'dann bekomme ich das gewünschte Ergebnis. Scheint mehr von einer Arbeit als eine allgemeine Lösung, da es nicht einheitlich auf alle Daten angewendet werden kann, muss ich wissen, wie viele Ziffern ich in meinen Daten haben und entsprechend anpassen werde. Es wäre schön, wenn sich pander ähnlich wie "kable (x, digits = 2)" verhält, was zu 2 Nachkommastellen führt. –

Antwort

0

Die ?panderOptions Seite sagt 'Ziffern' i sehen s wurde an format übergeben, wo es als die Anzahl der "signifikanten Ziffern" interpretiert wird. Signifikante Ziffern haben mit Dezimalstellen wenig zu tun. Sie können 2 signifikante Stellen in einem Dezimalwert von 0,000041 haben. Sie können den Effekt der Parameter auf format() -ed Werte sehen:

> format(c(10000.41, 9999.68, 10000.64), digits=2) 
[1] "10000" "10000" "10001" 

Sie wollen die „runde“ Option zu halten, bei 2.

+0

das Entfernen der 'panderOptions ('Ziffern', 2)' und das Halten von 'panderOptions ('round', 2)' ergab das exakt gleiche Ergebnis. –

+0

Vielleicht ist die Einstellung der Ziffern "dauerhaft"? Hast du versucht, es auf NA oder 7 zu setzen? –

+0

@ 42- Setzen von 'Digits 'auf' 7' wird die gewünschten Ergebnisse erzielen, siehe oben meinen Kommentar. – daroczig

0

round Einstellung hat keinen direkten Einfluss auf die Anzahl der Ziffern (obwohl ein indirekter Einfluss aufgrund der möglichen Wiedergabe von Ziffern unbedeutend ist (0)). Das Hauptproblem hier ist pander nicht zulässt, dass Sie den nsmall Parameter von format() setzen, die

die Mindestanzahl der Ziffern rechts vom Dezimalpunkt in der Formatierung real/komplexen Zahlen in nicht-wissenschaftlichen Formate festgelegt würden . Zulässige Werte sind 0 < = nKleines < = 20.

Aber da pander nur numerische Werte format()-Feeds können Sie einfach dieses Problem umgehen, indem die Werte Fütterung as.character() Pander:

library (data.table) 
library(magrittr) 
library (pander) 

set.seed(1984) 
longString <- "description string" 
dt <- data.table(id = c(1:3), 
       description = rep(longString, 3), 
       value = rnorm(3, mean = 10000, sd = 1)) 

pander(
    x = dt %>% 
    mutate(value = value %>% round(2) %>% as.character()), 
    split.cell = 80, 
    split.table = Inf, 
    justify = "ccr" 
) 

was dazu führt, :

------------------------------------ 
id  description   value 
---- -------------------- ---------- 
1 description string 10000.41 

2 description string  9999.68 

3 description string 10000.64 
------------------------------------ 
Verwandte Themen