【问题标题】:Knitr: Only chunk output is html (rest stays rmarkdown)Knitr:只有块输出是 html(其余保持 rmarkdown)
【发布时间】:2013-06-13 19:52:45
【问题描述】:

我正在尝试制作一个基于 knitr 的程序,该程序从字符向量中读取 rmarkdown 并写入 textConnection。我几乎得到了我想要的东西,但我发现 knitr 只为块生成 html,并且只是通过 rmarkdown 传递给 html。

代码如下:

text_input <- "Title
========================================================

This is an R Markdown document. Markdown is a simple formatting syntax for authoring web pages (click the **MD** toolbar button for help on Markdown).

When you click the **Knit HTML** button a web page 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 cache=TRUE}
x <- cars
summary(x)
```

You can also embed plots, for example:

```{r fig.width=7, fig.height=6,cache=TRUE}
plot(x)
```
"
library(knitr)

outfile <- textConnection("foo.html", "w")

pat_md()
render_html()
knit(input=NULL,output=outfile,text=text_input)
close(outfile)
cat(foo.html,sep="\n")

哪些输出:

Title
========================================================

This is an R Markdown document. Markdown is a simple formatting syntax for authoring web pages (click the **MD** toolbar button for help on Markdown).

When you click the **Knit HTML** button a web page 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:

<div class="chunk" id="unnamed-chunk-1"><div class="rcode"><div class="source"><pre class="knitr r">x <- cars
summary(x)
</pre></div><div class="output"><pre class="knitr r">##      speed           dist    
##  Min.   : 4.0   Min.   :  2  
##  1st Qu.:12.0   1st Qu.: 26  
##  Median :15.0   Median : 36  
##  Mean   :15.4   Mean   : 43  
##  3rd Qu.:19.0   3rd Qu.: 56  
##  Max.   :25.0   Max.   :120
</pre></div></div></div>


You can also embed plots, for example:

<div class="chunk" id="unnamed-chunk-2"><div class="rcode"><div class="source"><pre class="knitr r">plot(x)
</pre></div><div class="rimage default"><img src="figure/unnamed-chunk-2.png" title="plot of chunk unnamed-chunk-2" alt="plot of chunk unnamed-chunk-2" class="plot" /></div>
</div></div>

这是预期的行为还是我做错了什么?

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    我以不同的方式解决了这个问题(使用 knitr 创建 md 文件,然后使用 md -> html):

    text_input <- "markdown text"
    library(knitr)
    
    foo.html <- knit2html(text=text_input)
    

    谢谢一辉。但是,正如我在下面的评论中指出的那样,生成的 html 仍然存在一些问题(仅使用字符向量输入而不是常规文件)。

    【讨论】:

    • 这就是knit2html() 所做的:knit2html(text = text_input)
    • 其实我现在正在尝试决定是否创建一个后续问题。此输出对于常规文件非常有效,但对于文本输入,如果字符向量包含换行符“\n”,则会出现问题。基本上,生成的 html 字符串有很多“\n”,这似乎会导致一些 html 解析问题。
    • 您只能在屏幕上看到 \n,但这并不是字面上的反斜杠,后面跟着n——它是一个换行符。你不需要解析任何东西。那个字符串就是你想要的。例如,您可以使用cat() 将其写入文件。如果你给knit2html() 一个文本输入,你会得到一个文本输出。如果你给它一个输入文件,你会得到一个输出文件。
    • 知道了。是的,在这种情况下,从 RStudio 复制字符串是错误的。在我在预期的域(一个闪亮的应用程序)中测试它之后,一切都很好。再次感谢您的基本帮助。
    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多