R kable не будет печататься в документе Markdown - PullRequest
0 голосов
/ 24 февраля 2019

Я недавно пытался использовать пакет kable для таблиц, и хотя я вполне удовлетворен результатами, которые я получаю в сценариях R, я не могу понять, как их использовать в файле R Markdown.

Вот краткий пример таблицы, которая работает в R-скрипте, но не работает, когда я пытаюсь воспроизвести ее в документе Markdown.

data(mtcars)

mtcars

## @knitr install

check_and_install <- function( packname ) { # given package name, check installation, install if not found
  if ( packname %in% rownames(installed.packages()) == FALSE ) {
install.packages( packname, repos="http://cran.rstudio.com/"  )
  }
}

check_and_install("kableExtra")
check_and_install("dplyr")
check_and_install("qwraps2")
check_and_install("reprex")

library(kableExtra)
library(dplyr)
library(qwraps2)
library(reprex)

## Tableau

summary_test  <-
  list("Cylindres" =
     list("Huit" = ~ qwraps2::n_perc0(cyl == 8,show_symbol=TRUE),
          "Six" = ~ qwraps2::n_perc0(cyl == 6,show_symbol=TRUE),
          "Quatre"  = ~ qwraps2::n_perc0(cyl == 4,show_symbol=TRUE)),
   "Vitesses" =
     list("Cinq" = ~ qwraps2::n_perc0(gear == 5,show_symbol=TRUE),
          "Quatre" = ~ qwraps2::n_perc0(gear == 4,show_symbol=TRUE),
          "Trois" = ~ qwraps2::n_perc0(gear == 3,show_symbol=TRUE))
  )



tabtest2<-summary_table(dplyr::group_by(mtcars, am), summary_test)


kable_out <- kable(tabtest2, format = "html", caption = "",     col.names=c("Auto","Manuelle"), booktabs = T, full_width = F) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kableExtra::group_rows("Cylindres", 1, 3) %>%
  kableExtra::group_rows("Vitesses", 4, 6) 

kable_out

Теперь что касается следующегошаг, я хочу включить эту вкладку в документ R-уценки, в идеале вывод будет файл слова.И вот тут у меня проблемы: я не могу найти способ правильно их включить.Уценка полностью испортила форматирование в выводе слова.Обратите внимание, что нет проблем, если я переключу вывод в HTML ... к сожалению, я должен предоставить текстовый документ на данный момент, так что это не вариант.

---
title: "Test2"
author: "MJ"
date: "14 mars 2019"
output: word_document
always_allow_html: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(cache = FALSE, include = FALSE)
library(knitr)
opts_chunk$set(echo = FALSE, cache=FALSE)
read_chunk('C:/Users/Mathieu/Desktop/indicateurs pps/Test SO.R')
```


```{r install, include=FALSE}
```

## Analyse comparative


```{r table1, include=T}
knitr::kable(tabtest2, format = "html", caption = "",     col.names=c("Auto","Manuelle"), booktabs = T, full_width = F) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kableExtra::group_rows("Cylindres", 1, 3) %>%
  kableExtra::group_rows("Vitesses", 4, 6) 


kable_out
```

Никаких проблем при создании документакажется, все идет гладко ...

Я уже давно в этом разбираюсь и просто не могу понять, в чем дело.Кто-нибудь ведет кого-то?

Заранее спасибо

1 Ответ

0 голосов
/ 14 марта 2019

Спасибо за правки, которые сделали этот пример воспроизводимым @Mathieu -

Итак, происходит несколько вещей, которые я вижу.

  1. Вы выводите в Word, но хотитеиспользовать функции HTML.Word не предназначен для использования функций HTML (таких как "зависание", "полосатый" и т. Д.).
  2. Вы пытаетесь создать таблицу из создателя таблицы kable из другого создателя таблицы summary_table.Если вы посмотрите на summary_table, он фактически создает таблицу разметки LaTeX.Поэтому будут проблемы с преобразованием из одной табличной формы в другую.

Я проверил его, и есть три варианта:

Создать документ Word, но использовать qwarps2 для создания таблицы

---
title: "Test2"
author: "MJ"
date: "14 mars 2019"
output: word_document
always_allow_html: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(cache = FALSE, include = FALSE)
library(knitr)
opts_chunk$set(echo = FALSE, cache=FALSE)
read_chunk("Test SO.R")
options(qwraps2_markup = "markdown") # this is new
```


```{r install, include=FALSE}
```

## Analyse comparative

```{r table1, include=TRUE, results='asis'}
tabtest2
```

Ничего не изменить ивывод HTML-документа

---
title: "Test2"
author: "MJ"
date: "14 mars 2019"
output: html_document
always_allow_html: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(cache = FALSE, include = FALSE)
library(knitr)
opts_chunk$set(echo = FALSE, cache=FALSE)
read_chunk("Test SO.R")
```


```{r install, include=FALSE}
```

## Analyse comparative

```{r table1, include=TRUE, results='asis'}
knitr::kable(tabtest2, caption = "", format = "html", col.names=c("Auto","Manuelle"), booktabs = T,full_width = F) %>%
  kable_styling(bootstrap_options = c("striped", "hover")) %>%
  kableExtra::group_rows("Cylindres", 1, 3) %>%
  kableExtra::group_rows("Vitesses", 4, 6)
```

Попробуйте другой подход и не используйте qwarps2

Почему бы просто не создать таблицу knitr непосредственно из данных?Т.е. не используете qwraps2?Чтобы получить функциональность, аналогичную qwarps2, попробуйте пакет carpenter (заявление об отказе, я его создал, но если он не работает, в конце README / первой страницы есть список похожих пакетов).Вы можете получить данные так, как вы хотите, для таблицы, а затем в конце создать таблицу из спорных данных, используя knitr.

...