2014-07-22 18 views
5

Sto usando kable con la funzionalità di knit to Word al lavoro. Trovo che spesso ho tabelle semplici con conteggi come prima colonna e poi poche colonne con proporzioni. Mi piacerebbe che la colonna del conto fosse arrotondata alla cifra più vicina e le altre colonne al centesimo più vicino. Ho provato a utilizzare l'argomento digits = c (0,2,2) all'interno del comando kable(), ma visualizza ancora due cifre per il conteggio, anche se è arrotondato alla cifra più vicina.kable visualizza un numero diverso di cifre in ogni colonna

+2

Si può fornire un [esempio riproducibile minimo] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? – Thomas

+0

È possibile convertire i conteggi in tipo "intero"? Questo fa alcuna differenza quando si stampa? –

risposta

6

Non vedo il problema qui.

> knitr::kable(as.data.frame(matrix(rnorm(12), 4)), digits = c(0, 2, 2)) 


| V1| V2| V3| 
|--:|-----:|-----:| 
| -1| 2.11| -0.54| 
| 0| -0.33| 0.95| 
| -1| -1.14| -0.96| 
| 0| 1.45| -0.93| 
> sessionInfo() 
R version 3.1.1 (2014-07-10) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    LC_TIME=en_US.UTF-8  
[4] LC_COLLATE=en_US.UTF-8  LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
[7] LC_PAPER=en_US.UTF-8  LC_NAME=C     LC_ADDRESS=C    
[10] LC_TELEPHONE=C    LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] evaluate_0.5.5 formatR_0.10.5 knitr_1.6 stringr_0.6.2 tools_3.1.1 
+0

Grazie !! All'inizio non avevo as.data.frame. Aggiungendo che lo ha risolto. Cosi 'semplice. – user3866200

+0

@ user3866200 Si prega di contrassegnare la risposta come accettata se funziona per voi. –

1

Un esempio veloce con pander:

> df <- data.frame(a = 1:5, b = runif(5), c = runif(5)) 
> library(pander) 
> pander(df) 

------------------ 
a b  c 
--- ------ ------- 
1 0.5949 0.4595 

2 0.7645 0.5012 

3 0.7755 0.6024 

4 0.818 0.01271 

5 0.4329 0.7588 
------------------ 

> panderOptions('digits', 2) 
> pander(df) 

-------------- 
a b  c 
--- ---- ----- 
1 0.59 0.46 

2 0.76 0.5 

3 0.78 0.6 

4 0.82 0.013 

5 0.43 0.76 
-------------- 

Questo è quello che serve?