Подтвердить что ты не робот

Как копировать вязать HTML в командной строке?

Я знаю, что этот вопрос похож на этот. Но я не мог найти там решение, разместив его здесь снова.

Я хочу получить тот же результат, что и я, нажав "Вязать HTML", но с помощью команды. Я попытался использовать knit2html, но он беспорядок с форматированием и не включает заголовок, kable не работает и т.д.

Пример:

Это мой файл test.Rmd,

---
title: "test"
output: html_document
---

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r}
library(knitr,quietly=T)
kable(summary(cars))
```

You can also embed plots, for example:

```{r, echo=FALSE}
plot(cars)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Вывод:

Вязать HTML

enter image description here

knit2html

enter image description here

4b9b3361

Ответ 1

Документация сообщает нам:

Если вы не используете RStudio, вам просто нужно вызвать функцию rmarkdown::render, например:

rmarkdown::render("input.Rmd")

Обратите внимание, что в случае использования кнопки "Вязание" в RStudio основной механизм одинаков (RStudio вызывает функцию rmarkdown::render под капотом).

По сути, rmarkdown::render делает гораздо больше настроек, чем knitr::knit2html, хотя у меня нет исчерпывающего списка всех различий.

Самый гибкий способ рендеринга вывода - это, во всяком случае, предоставить свою собственную таблицу стилей для форматирования вывода в соответствии с вашими пожеланиями.

Обратите внимание, что вам нужно настроить Pandoc вручную для работы с rmarkdown::render в командной строке.


При этом, вот два замечания, которые улучшат вывод knitr::knit2hmtl, и, по моему мнению, превосходят использование rmarkdown::render:

  • Чтобы включить заголовок, используйте тег заголовка Markdown, а не тег YAML:

    # My title
    
  • Чтобы форматировать таблицы, не используйте функцию raw kable. На самом деле это также верно при использовании rmarkdown::render: выравнивание ячеек таблицы полностью отключено. Rmarkdown, по-видимому, использует центрирование как выравнивание по умолчанию, но этот параметр почти никогда не является правильным. Вместо этого вы должны выровнять текст и (как правило) выравнивать по правому краю числа. На момент написания статьи, Knitr не может делать это автоматически (насколько я знаю), но довольно легко включить фильтр для этого:

    ```{r echo=FALSE}
    library(pander)
    
    # Use this option if you don’t want tables to be split
    panderOptions('table.split.table', Inf)
    
    # Auto-adjust the table column alignment depending on data type.
    alignment = function (...) UseMethod('alignment')
    alignment.default = function (...) 'left'
    alignment.integer = function (...) 'right'
    alignment.numeric = function (...) 'right'
    
    # Enable automatic table reformatting.
    opts_chunk$set(render = function (object, ...) {
        if (is.data.frame(object) ||
            is.matrix(object)) {
            # Replicate pander’s behaviour concerning row names
            rn = rownames(object)
            justify = c(if (is.null(rn) || length(rn) == 0 ||
                            (rn == 1 : nrow(object))) NULL else 'left',
                        sapply(object, alignment))
            pander(object, style = 'rmarkdown', justify = justify)
        }
        else if (isS4(object))
            show(object)
        else
            print(object)
    })
    ```