Как вставить HTML в таблицу KableExtra - PullRequest
0 голосов
/ 29 января 2019

Возможно ли добавить HTML-код div в код kable: Воспроизводимый пример:

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!

1 Ответ

0 голосов
/ 29 января 2019

Работать с таблицами 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)
...