2016-01-15 15 views
8

Czy istnieje sposób, aby powiedzieć kable złamać długi stół (który przekracza tekst lub szerokość strony) na wiele, które są wyświetlane poniżej siebie?r przecinek Kable podział tabeli szerokości na wiele tabel poniżej siebie

To znaczy, można to zrobić tak:

```{r} 
data <- data.frame(....) 
kable(data[,1:6]) 
kable(data[,7:12]) 
``` 

Ale to jest dużo pracy w zastanawianie się, gdzie się przełamać data.frame. Czy jest sposób, aby zrobić to automatycznie? Nie znalazłem żadnej opcji w samej funkcji kable.

Jednym ze sposobów wykonania obliczeń jest obliczenie szerokości ciągu najdłuższych wpisów w tabeli (i nagłówku) i rozbicie tabeli w zależności od tego. Ale nadal mam nadzieję, że jest już dobry sposób na zrobienie tego ...

Optymalnie chciałbym to zrobić dla generowania strony HTML, ale sposób na lateks również byłby świetny.

+0

'xtable' i' pixiedust' zarówno zapewnienie możliwości korzystania pakiet LaTeX wiek 'longtable', który spowoduje rozbicie tabel przekraczających długość strony. 'pixiedust' może naśladować to zachowanie w HTML i słowie. Nie jestem pewien, czy 'xtable' może to zrobić w html. Ale nie jestem świadomy żadnego pakietu, który może zautomatyzować to dla szerokości tabeli w R lub LaTeX. – Benjamin

+0

Tak, z przykładu na stronie man w kable zobaczyłem, że można go również używać z longtable: 'kable (matrix (1000, ncol = 5), format =" latex ", cyfry = 2, longtable = TRUE)' . Dobrze wiedzieć, że 'pixiedust' może zrobić to samo w html i słowie. Ale tak, to się łamie tylko wtedy, gdy długość przekracza stronę, a nie szerokość. – nnn

Odpowiedz

12

pander może zrobić to za Ciebie i wiele więcej - szybki przykład na temat funkcji tabeli podzielonym bezpośrednio z podanych argumentów funkcji (patrz ?pandoc.table uzyskać więcej informacji, która jest wywoływana przez ogólnym pander S3 metody w tle):

> pander(head(mtcars), split.table = 80, style = 'rmarkdown') 

|   &nbsp;   | mpg | cyl | disp | hp | drat | 
|:-----------------------:|:-----:|:-----:|:------:|:----:|:------:| 
|  **Mazda RX4**  | 21 | 6 | 160 | 110 | 3.9 | 
| **Mazda RX4 Wag** | 21 | 6 | 160 | 110 | 3.9 | 
|  **Datsun 710**  | 22.8 | 4 | 108 | 93 | 3.85 | 
| **Hornet 4 Drive** | 21.4 | 6 | 258 | 110 | 3.08 | 
| **Hornet Sportabout** | 18.7 | 8 | 360 | 175 | 3.15 | 
|  **Valiant**  | 18.1 | 6 | 225 | 105 | 2.76 | 

Table: Table continues below 

|   &nbsp;   | wt | qsec | vs | am | gear | carb | 
|:-----------------------:|:-----:|:------:|:----:|:----:|:------:|:------:| 
|  **Mazda RX4**  | 2.62 | 16.46 | 0 | 1 | 4 | 4 | 
| **Mazda RX4 Wag** | 2.875 | 17.02 | 0 | 1 | 4 | 4 | 
|  **Datsun 710**  | 2.32 | 18.61 | 1 | 1 | 4 | 1 | 
| **Hornet 4 Drive** | 3.215 | 19.44 | 1 | 0 | 3 | 1 | 
| **Hornet Sportabout** | 3.44 | 17.02 | 0 | 0 | 3 | 2 | 
|  **Valiant**  | 3.46 | 20.22 | 1 | 0 | 3 | 1 | 

można ustawić globalny próg liczby znaków poprzez global options wśród wielu innych rzeczy, np:

> panderOptions('table.split.table', 80) 
> panderOptions('table.style', 'grid') 
> panderOptions('table.split.cells', 10) 
> panderOptions('table.alignment.default', 'left') 
> panderOptions('table.alignment.rownames', 'right') 
> panderOptions('decimal.mark', ',') 
> pander(head(mtcars)) 

+----------------+-------+-------+--------+------+--------+-------+ 
|   &nbsp; | mpg | cyl | disp | hp | drat | wt | 
+================+=======+=======+========+======+========+=======+ 
|  **Mazda | 21 | 6  | 160 | 110 | 3,9 | 2,62 | 
|   RX4** |  |  |  |  |  |  | 
+----------------+-------+-------+--------+------+--------+-------+ 
|  **Mazda | 21 | 6  | 160 | 110 | 3,9 | 2,875 | 
|  RX4 Wag** |  |  |  |  |  |  | 
+----------------+-------+-------+--------+------+--------+-------+ 
|  **Datsun | 22,8 | 4  | 108 | 93 | 3,85 | 2,32 | 
|   710** |  |  |  |  |  |  | 
+----------------+-------+-------+--------+------+--------+-------+ 
|  **Hornet 4 | 21,4 | 6  | 258 | 110 | 3,08 | 3,215 | 
|  Drive** |  |  |  |  |  |  | 
+----------------+-------+-------+--------+------+--------+-------+ 
|  **Hornet | 18,7 | 8  | 360 | 175 | 3,15 | 3,44 | 
| Sportabout** |  |  |  |  |  |  | 
+----------------+-------+-------+--------+------+--------+-------+ 
| **Valiant** | 18,1 | 6  | 225 | 105 | 2,76 | 3,46 | 
+----------------+-------+-------+--------+------+--------+-------+ 

Table: Table continues below 

+----------------+--------+------+------+--------+--------+ 
|   &nbsp; | qsec | vs | am | gear | carb | 
+================+========+======+======+========+========+ 
|  **Mazda | 16,46 | 0 | 1 | 4  | 4  | 
|   RX4** |  |  |  |  |  | 
+----------------+--------+------+------+--------+--------+ 
|  **Mazda | 17,02 | 0 | 1 | 4  | 4  | 
|  RX4 Wag** |  |  |  |  |  | 
+----------------+--------+------+------+--------+--------+ 
|  **Datsun | 18,61 | 1 | 1 | 4  | 1  | 
|   710** |  |  |  |  |  | 
+----------------+--------+------+------+--------+--------+ 
|  **Hornet 4 | 19,44 | 1 | 0 | 3  | 1  | 
|  Drive** |  |  |  |  |  | 
+----------------+--------+------+------+--------+--------+ 
|  **Hornet | 17,02 | 0 | 0 | 3  | 2  | 
| Sportabout** |  |  |  |  |  | 
+----------------+--------+------+------+--------+--------+ 
| **Valiant** | 20,22 | 1 | 0 | 3  | 1  | 
+----------------+--------+------+------+--------+--------+