首页 > 解决方案 > 使用 kable 和 kableExtra 使表格行跨越多个列

问题描述

我正在尝试使用 R 和kableandkableExtra包创建一个 HTML 表。我在创建跨越多列的行时遇到问题。我想创建一个表,其中最后一行包含所有列的相同值,而不实际重复该值。我在下面创建了一个小例子来说明我正在尝试做的事情。

library(kableExtra)
library(knitr)

summary_stats <- matrix(c(51,43,22,22),ncol=2,byrow=TRUE)
colnames(summary_stats) <- c("Mean","SD")
rownames(summary_stats) <- c("Age","Observations")
summary_stats

kable_table <- kable(summary_stats) %>% 
  kable_styling()

我不想在两列的最后一行重复数字 22,而是将它放在两列之间。

我可以使用colspan参数通过以下 HTML 代码实现我想要的:

<table class="table" style="margin-left: auto; margin-right: auto;">
 <thead>
  <tr>
   <th style="text-align:left;">   </th>
   <th style="text-align:right;"> Mean </th>
   <th style="text-align:right;"> SD </th>
  </tr>
 </thead>
<tbody>
  <tr>
   <td style="text-align:left;"> Age </td>
   <td style="text-align:right;"> 51 </td>
   <td style="text-align:right;"> 43 </td>
  </tr>
  <tr>
   <td style="text-align:left;"> Observations </td>
   <td style="text-align:center;" colspan =  "2"> 22 </td>
  </tr>
</tbody>
</table>

请注意,HTML 代码只是kable_table我在 R 中创建的对象的输出,我在其中手动编辑了 HTML 代码以包含 colspan 参数。我想在 R 中以编程方式执行此操作,而不必手动更改代码。

我尝试使用包中的row_spec函数kableExtra来添加必要的代码,但我受限于该add_css选项(如预期的那样)只接受与样式相关的参数。换句话说,我不能将colspan参数传递给选项。

我的问题是,在我创建表格后是否有一种合理的方法可以将必要的 HTML 添加到表格中,或者 kable/kabeExtra 框架中是否有任何选项可以让我做到这一点,但我错过了?

标签: htmlrhtml-tablekablekableextra

解决方案


推荐阅读