Когда я использую knitr для вязки в html, таблица не выводится - PullRequest
0 голосов
/ 01 июля 2018

Я использую kableExtra, чтобы попытаться вывести таблицу LaTeX, но когда я связываю свой код с html, таблица не выводится. Это просто выводит мусор, который мне не нужен. Пример кода ниже, и результат вывода также:

```{r, echo=FALSE}
library(dplyr)
library(kableExtra)
library(knitr)

x <- seq(1,9,by = 1)

kable(x,format = 'latex', booktabs = T, caption = "A KnitR Kable")
```

Вывод в html файле:

## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
```

Что не так?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Ну, как автор kableExtra, я чувствую, что мне нужно кое-что прояснить здесь. Когда вы используете knitr::kable, то, что сказал @JonGrub, абсолютно правильно. format = "markdown" в kable является значением по умолчанию, и вы позволите pandoc определить формат вашей таблицы для вас. Однако, если вы используете kableExtra, который работает только с таблицами LaTeX или HTML, эти выходные данные уценки не будут работать. Вот почему в прошлом вам нужно было указывать format в вашем вызове kable.

Несколько месяцев назад я понял, что людям нужно создавать таблицы, которые работают одновременно и в HTML, и в LaTeX, особенно с популярностью bookdown. В результате я добавил что-то к kableExtra в его 0.9.0, чтобы оно автоматически определяло, используется ли оно в среде LaTeX. Если это так, он по умолчанию установит kable форматы на «латекс». В противном случае вы получите таблицу HTML (если вы используете ее в обычном сеансе R, вы увидите ее предварительный просмотр в RStudio). Этот маленький трюк позволяет избавиться от этих format="xxx" звонков. Он позволяет генерировать настраиваемый вывод таблицы с использованием того же фрагмента кода, который работает как в HTML, так и в LaTeX.

0 голосов
/ 01 июля 2018

Как отмечается в некоторых комментариях, проблема заключается в том, что вы используете format = 'latex', в то время как вы используете R-markdown для связывания с отчетом html. R-markdown использует язык уценки вместо Latex при создании html.

Изображение выглядит по-другому, когда вы создаете PDF, так как процесс сначала создает латексный документ, скомпилированный с латексом.

Чтобы получить чанк, вам нужно будет выбрать format = 'markdown'. Это будет работать как для HTML, так и для PDF. Однако я бы посоветовал вам вообще не указывать формат, поскольку rmarkdown выберет формат для вас. Вторая проблема, о которой вы упомянули, - это сообщение о запуске dplyr. Вы можете отключить это, используя message = FALSE в настройках вашего чанка. Поэтому я бы предложил:

```{r echo = FALSE, message = FALSE}
library(dplyr)
library(kableExtra)
library(knitr)

x <- seq(1, 9, by = 1)

kable(x, booktabs = TRUE, caption = "A KnitR Kable")
```

Еще один хороший совет - попробуйте использовать команду render() из rmarkdown, если у вас возникли проблемы с непосредственным использованием knit из RStudio. Это часто делает ошибки более явными. Это синтаксис:

rmarkdown::render("C:/path/to/file.Rmd", output_format = "all")

Обратите внимание, что здесь вы можете указать формат выходного файла. Все означает, что будут созданы все выходные форматы, указанные в вашем заголовке. Например:

---
title: ''
output:
  pdf_document: default
  html_document: default
---

В этом случае вышеприведенная команда выведет HTML-файл, а также файл PDF. Если вы не можете вывести PDF-файлы, скорее всего, вам не хватает латексной установки. Вторая рекомендация @Tung tinytex, но вы также можете посмотреть на Miktex или Texlive.

Редактировать: Благодаря комментарию @ camille я понял, format = 'latex' отлично работает при вязании в PDF и будет плохо себя вести при вязании в html.

...