我知道这个问题与this类似。但我无法在那里找到解决方案,所以再次在这里发布。
我希望通过点击"编织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
knit2html
答案 0 :(得分:19)
documentation告诉我们:
如果您不使用RStudio,则只需调用
rmarkdown::render
函数,例如:rmarkdown::render("input.Rmd")
请注意,在使用RStudio中的“Knit”按钮的情况下,基本机制是相同的(RStudio调用引擎盖下的
rmarkdown::render
功能。)
从本质上讲,rmarkdown::render
比knitr::knit2html
做了更多的设置,尽管我没有详尽的所有差异列表。
无论如何,最灵活的渲染输出方式是提供自己的样式表,以根据您的意愿格式化输出。
请注意,您需要set up Pandoc manually在命令行上使用rmarkdown::render
。
那说,这里有两条评论可以改善knitr::knit2hmtl
输出,而且在我看来优于使用rmarkdown::render
:
要包含标题,请使用Markdown标题标记,而不是YAML标记:
# My title
要格式化表格,请不要使用原始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)
})
```