r markdown kable 将 table 宽度分成多个 table 彼此下方

r markdown kable break table width into multiple tables below each other

有没有办法告诉 kable 将长 table(会超过文本或页面宽度)分成多个显示在彼此下方的?

我的意思是,你可以这样做:

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

但是要找出中断 data.frame 的位置需要做很多工作。有没有办法自动完成?我在 kable 函数本身中找不到选项。

一种计算方法是计算 table(和 header)中最长条目的字符串宽度,并据此打破 table。不过还是希望已经有好的方法了...

最理想的情况是,我想为 html 页面生成执行此操作,但是为乳胶执行此操作的方法也很棒。

pander 可以为您和更多人做这件事——拆分 table 特征的快速示例,具有直接指定的函数参数(有关详细信息,请参阅 ?pandoc.table,称为通过一般的 pander S3 方法在后台):

> 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    |

您可以通过 global options 设置字符数的全局阈值,例如:

> 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      |
+----------------+--------+------+------+--------+--------+