如何在 KableExtra 的 table 中插入 html
How to Insert html in table of KableExtra
是否可以在kable代码中添加div html代码:
可重现的例子:
kable(head(iris))
创建这样的输出:
` <table>
<thead>
<tr>
<th style="text-align:right;"> Sepal.Length </th>
<th style="text-align:right;"> Sepal.Width </th>
<th style="text-align:right;"> Petal.Length </th>
<th style="text-align:right;"> Petal.Width </th>
<th style="text-align:left;"> Species </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right;"> 5.1 </td>
<td style="text-align:right;"> 3.5 </td>
<td style="text-align:right;"> 1.4 </td>
<td style="text-align:right;"> 0.2 </td>
<td style="text-align:left;"> setosa </td>
</tr>
<tr>
<td style="text-align:right;"> 4.9 </td>
<td style="text-align:right;"> 3.0 </td>
<td style="text-align:right;"> 1.4 </td>
<td style="text-align:right;"> 0.2 </td>
<td style="text-align:left;"> setosa </td>
</tr>
</tbody>
</table>`
我想在最后一列的最后一行添加 <div class = "alter_table">
`<div class = "alter_table"> <td style="text-align:left;"> setosa </td></div>
<div class = "alter_table"> <td style="text-align:left;"> setosa </td></div>`
我想使用 R 自动创建!
使用 HTML 表格总是很容易,而且您知道只要知道如何使用 xml2
就可以做任何事情。 :)
library(kableExtra)
library(xml2)
k_xml <- kable(iris[1:2,]) %>%
kable_as_xml()
k_xml %>%
xml_child(2) %>% # Go to <tbody> tag
xml_child(2) %>% # 2nd row of <tbody>
xml_child(5) %>% # 5th <td>
xml_set_attr("class", "alter_table") # Add an attribute
xml_as_kable(k_xml)
有关详细信息,请参阅我的 rstudio::conf 研讨会幻灯片:https://arm.rbind.io/slides/extend.html#1
更新:如果您想要 中的第 2 列,则需要一些 XPATH。使用上面的例子:
library(kableExtra)
library(xml2)
k_xml <- kable(iris[1:2,]) %>%
kable_as_xml()
k_xml %>%
xml_child(2) %>% # Go to <tbody> tag
xml_find_all("//tr/td[2]") %>% # Find all 2nd td of tr rows
xml_set_attr("class", "alter_table") # Add an attribute
xml_as_kable(k_xml)
是否可以在kable代码中添加div html代码: 可重现的例子:
kable(head(iris))
创建这样的输出:
` <table>
<thead>
<tr>
<th style="text-align:right;"> Sepal.Length </th>
<th style="text-align:right;"> Sepal.Width </th>
<th style="text-align:right;"> Petal.Length </th>
<th style="text-align:right;"> Petal.Width </th>
<th style="text-align:left;"> Species </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right;"> 5.1 </td>
<td style="text-align:right;"> 3.5 </td>
<td style="text-align:right;"> 1.4 </td>
<td style="text-align:right;"> 0.2 </td>
<td style="text-align:left;"> setosa </td>
</tr>
<tr>
<td style="text-align:right;"> 4.9 </td>
<td style="text-align:right;"> 3.0 </td>
<td style="text-align:right;"> 1.4 </td>
<td style="text-align:right;"> 0.2 </td>
<td style="text-align:left;"> setosa </td>
</tr>
</tbody>
</table>`
我想在最后一列的最后一行添加 <div class = "alter_table">
`<div class = "alter_table"> <td style="text-align:left;"> setosa </td></div>
<div class = "alter_table"> <td style="text-align:left;"> setosa </td></div>`
我想使用 R 自动创建!
使用 HTML 表格总是很容易,而且您知道只要知道如何使用 xml2
就可以做任何事情。 :)
library(kableExtra)
library(xml2)
k_xml <- kable(iris[1:2,]) %>%
kable_as_xml()
k_xml %>%
xml_child(2) %>% # Go to <tbody> tag
xml_child(2) %>% # 2nd row of <tbody>
xml_child(5) %>% # 5th <td>
xml_set_attr("class", "alter_table") # Add an attribute
xml_as_kable(k_xml)
有关详细信息,请参阅我的 rstudio::conf 研讨会幻灯片:https://arm.rbind.io/slides/extend.html#1
更新:如果您想要 中的第 2 列,则需要一些 XPATH。使用上面的例子:
library(kableExtra)
library(xml2)
k_xml <- kable(iris[1:2,]) %>%
kable_as_xml()
k_xml %>%
xml_child(2) %>% # Go to <tbody> tag
xml_find_all("//tr/td[2]") %>% # Find all 2nd td of tr rows
xml_set_attr("class", "alter_table") # Add an attribute
xml_as_kable(k_xml)