Сохранение нескольких таблиц с использованием функции markdown kable в html-файле - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать несколько таблиц и сохранить их на странице 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 портит формат, как вы можете видеть ниже. например, размер шрифта применяется к именам полей, но не к записям таблицы. Кроме того, там нет затенения строк.

enter image description here

Я провел поиск и нашел альтернативное решение, которое требует использования 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) 
}
```

enter image description here

...