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')
| | 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
| | 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))
+----------------+-------+-------+--------+------+--------+-------+
| | 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
+----------------+--------+------+------+--------+--------+
| | 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 |
+----------------+--------+------+------+--------+--------+
有没有办法告诉 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')
| | 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
| | 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))
+----------------+-------+-------+--------+------+--------+-------+
| | 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
+----------------+--------+------+------+--------+--------+
| | 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 |
+----------------+--------+------+------+--------+--------+