web-dev-qa-db-ja.com

コマンドラインでニットHTMLを複製する方法は?

私はこの質問が this 1に似ていることを知っています。しかし、私はそこで解決策を得ることができなかったので、ここにもう一度投稿します。

「KnitHTML」をクリックしたときとまったく同じ出力をコマンドで取得したいと思います。 knit2htmlを使ってみましたが、フォーマットが乱れてタイトルが入っていない、ケーブルが動かないなど。

例:

これは私の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

19
Avinash

ドキュメント は次のことを示しています。

RStudioを使用していない場合は、次のようにrmarkdown::render関数を呼び出す必要があります。

rmarkdown::render("input.Rmd")

RStudioの「ニット」ボタンを使用する場合、基本的なメカニズムは同じであることに注意してください(RStudioは内部でrmarkdown::render関数を呼び出します)。

本質的に、rmarkdown::renderknitr::knit2htmlよりもはるかに多くのセットアップを行いますが、すべての違いの完全なリストはありません。

出力をレンダリングする最も柔軟な方法は、とにかく、独自のスタイルシートを提供して、希望に応じて出力をフォーマットすることです。

コマンドラインでrmarkdown::renderを操作するには、 Pandocを手動で設定 する必要があることに注意してください。


そうは言っても、ここにknitr::knit2hmtlの出力を改善し、私の意見ではrmarkdown::renderを使用するよりも優れている2つの意見があります:

  • タイトルを含めるには、YAMLタグではなくMarkdownタイトルタグを使用します。

    # 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)
    })
    ```
    
19
Konrad Rudolph