【问题标题】:r markdown kable break table width into multiple tables below each otherr markdown kable 将表格宽度分成多个彼此下方的表格
【发布时间】:2016-04-21 04:26:29
【问题描述】:

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

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

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

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

一种计算方法是计算表(和标题)中最长条目的字符串宽度,并根据此打破表。但我还是希望已经有一个好的方法来做到这一点......

理想情况下,我想为 html 页面生成这样做,但为乳胶做这件事的方法也很好。

【问题讨论】:

  • xtablepixiedust 都提供了使用 LaTeX 包longtable 的选项,这将分解超过页面长度的表格。 pixiedust 可以在 HTML 和 word 中模仿这种行为。我不确定xtable 是否可以在 html 中完成。但我不知道有任何包可以在 R 或 LaTeX 中为表格的宽度自动执行此操作。
  • 是的,从 kable 手册页中的示例中我看到它也可以与 longtable 一起使用:kable(matrix(1000, ncol = 5), format = "latex", digits = 2, longtable = TRUE)。很高兴知道pixiedust 可以在 html 和 word 中做同样的事情。但是,是的,只有当长度超过页面而不是宽度时才会中断。

标签: r knitr r-markdown


【解决方案1】:

pander 可以为您以及更多其他功能做到这一点——直接指定函数参数的拆分表功能的快速示例(有关更多详细信息,请参阅?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      |
+----------------+--------+------+------+--------+--------+

【讨论】:

  • 我们可以对 xtable 做同样的事情吗?
  • @skan 我会在一个单独的问题中问这个问题
猜你喜欢
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多