Я пытаюсь создать несколько таблиц и сохранить их на странице HTML. Я использую функции R markdown
и kable
, как показано ниже:
Внутри Main.r
код:
library("knitr","kableExtra","data.table")
knit2html(paste0(progdir,'/Main.Rmd'),paste0(progdir,'/schema.html'))
Внутри Main.rmd
код:
```{r echo=FALSE, comment="", results='asis'}
for (i in 1:3){
DT = data.table(Field1 = paste0(i,c("a","b","c")), Field2 = paste0(i,c("d","e","f")))
print(DT %>% kable() %>%
kable_styling(bootstrap_options = "striped", full_width = F, font_size = 30) %>%
row_spec(3, bold = T, color = "white", background = "#D7261E"))
}
```
Проблема с этим методом, по-видимому, заключается в цикле for, который мы не можем вызвать kable
напрямую, и необходимо использовать print
вместе с ним, чтобы показать результаты (не знаю почему, но вне цикла kable
функция может печатать результаты без вызова print
; кто-нибудь может объяснить почему?). И print
+ kable
портит формат, как вы можете видеть ниже. например, размер шрифта применяется к именам полей, но не к записям таблицы. Кроме того, там нет затенения строк.
Я провел поиск и нашел альтернативное решение, которое требует использования save_kable
. Этот генерирует правильный формат, как показано ниже, но каждый раз перезаписывает HTML, так что в итоге я получу только последнюю таблицу. Кроме того, это сохраняет только таблицу, и все другие тексты в моем файле уценки будут потеряны. Буду признателен, если вы можете предложить решение, позволяющее мне создавать и печатать несколько таблиц с правильным форматированием в файле HTML.
```{r echo=FALSE, comment="", results='asis'}
for (i in 1:3){
DT = data.table(Field1 = paste0(i,c("a","b","c")), Field2 = paste0(i,c("d","e","f")))
DT %>% kable() %>%
kable_styling(bootstrap_options = "striped", full_width = F, font_size = 30) %>%
row_spec(3, bold = T, color = "white", background = "#D7261E") %>%
save_kable(file = "table1.html", self_contained = T)
}
```