2016-06-26 97 views
9

Il codice seguente produce 2 tabelle una sopra l'altra. Come potrei impostarlo per averli allineati uno accanto all'altro, ad es. 3 a una fila?Allinea più tabelle affiancate

--- 
title: "sample" 
output: pdf_document 
--- 

```{r global_options, R.options=knitr::opts_chunk$set(warning=FALSE, message=FALSE)} 
``` 

```{r sample, echo=FALSE, results='asis'} 
library(knitr) 
t1 <- head(mtcars)[1:3] 
t2 <- head(mtcars)[4:6] 
print(kable(t1)) 
print(kable(t2)) 
``` 

uscita si presenta così: enter image description here

+0

http://tex.stackexchange.com/questions/2832/how-can-i-have-two-tables-side-by-side – RoyalTS

+0

L'ho visto mentre cercavo come farlo. Non capisco la sintassi; La risposta più votata dice "Metti solo due ambienti tabulari uno accanto all'altro, aggiungi la spaziatura desiderata". quindi mostra un codice con sintassi come questo: \ begin {tabular} {ccc}. Non so come potrei applicarlo all'esempio sopra usando le tabelle mtcars? –

risposta

16

Basta mettere due frame di dati in un elenco, ad esempio,

t1 <- head(mtcars)[1:3] 
t2 <- head(mtcars)[4:6] 
knitr::kable(list(t1, t2)) 

Nota questo richiede knitr> = 1.13.

+0

E 'possibile utilizzare linee personalizzate come con 'xtable'? – Alex

+0

No, ma penso che 'kable (..., booktabs = TRUE)' e l'aggiunta di 'tables: yes' in YAML (come opzione _top-level_) dovrebbe darti quello che vuoi. –

+0

Questo è fantastico! Grazie mille –

10

Ho usato questo Align two data.frames next to each other with knitr? che mostra come farlo in html e questo https://tex.stackexchange.com/questions/2832/how-can-i-have-two-tables-side-by-side per allineare 2 tavoli in lattice uno accanto all'altro. Sembra che non sia possibile regolare liberamente le linee del tavolo come si può fare con xtable (qualcuno ne sa di più?). Con format = Latex si ottiene una linea orizzontale dopo ogni riga. Ma la documentazione mostra due esempi per altri formati. Uno che utilizza il pacchetto longtable (argomento aggiuntivo: longtable = TRUE) e l'altro che utilizza il pacchetto booktabs (booktabs = TRUE).

--- 
title: "sample" 
output: pdf_document 
header-includes: 
- \usepackage{booktabs} 
--- 

```{r global_options, R.options=knitr::opts_chunk$set(warning=FALSE, message=FALSE)} 
``` 


```{r sample, echo=FALSE, results='asis'} 
library(knitr) 
library(xtable) 

t1 <- kable(head(mtcars)[1:3], format = "latex", booktabs = TRUE) 
t2 <- kable(head(mtcars)[4:6], format = "latex", booktabs = TRUE) 

cat(c("\\begin{table}[!htb] 
    \\begin{minipage}{.5\\linewidth} 
     \\caption{} 
     \\centering", 
     t1, 
    "\\end{minipage}% 
    \\begin{minipage}{.5\\linewidth} 
     \\centering 
     \\caption{}", 
     t2, 
    "\\end{minipage} 
\\end{table}" 
)) 
``` 

enter image description here

+0

Ciao @Alex grazie per aver risposto. Non riconosco la sintassi, ad es. begin {table} [! htb]. Cos'è quello? È quella R? –

+2

No, questo è Latex. Se scrivi in ​​rmarkdown e stai producendo un PDF, questo non funziona direttamente. È stato tradotto per la prima volta in Latex. La cosa bella è che puoi anche usare il lattice direttamente e usare tutta la sua potenza. – Alex

+0

grazie per le informazioni, cercherò in latex –