17

动机:我经常想将使用 R Markdown 快速分析的结果粘贴到 StackExchange 站点中。这包括Stack Overflow 、Cross Validated上的 R-tag,甚至是Cognitive Sciences Stack Exchange等网站上的特定领域分析(例如,对OECD 生命指数数据的快速分析)。

默认转换的问题:默认降价输出knitr不适合包含在 StackExchange 中。我能看到的主要问题是

  • 图像参考本地硬盘
  • 代码块没有制表符或空格缩进;而是他们使用 github 风格的 Markdown(即没有缩进)

即,块看起来像这样:

```r
some code
```

和输出看起来像这样

```
## some output
## ...
```

可能还有其他具体问题需要考虑,例如

  • 确保正确包含表格
  • 确保为支持 MathJax 的站点(如交叉验证和认知科学堆栈交换)正确传递方程。

问题

将 R Markdown 转换为适合简单包含到 Stack Exchange 站点中的 Markdown(或 HTML)的好命令是什么?

我认为一个理想的命令是一个单行命令,它采用 R Markdown 文件并生成一个文件,其中整个内容可以直接粘贴到 Stack Exchange 中,以产生格式良好的问题或答案。

我将这个简单的 rmd 文件与几个代码块、一个图形和一个方程式作为测试示例共享。

初步想法:在 imgur 上托管图像可能会解决图像问题。这可以通过在 R Markdown 文件中包含以下内容来完成,但如果将此指令合并到某个单行命令中可能会更简单。

``` {r }
opts_knit$set(upload.fun = imgur_upload) 
````

可能值得考虑 HTML 或 Markdown 是否是粘贴到 StackExchange 的更好格式。该markdown软件包提供了很大的灵活性。

4

3 回答 3

13

这是一个可以帮助您入门的实用程序功能。它设置自动上传到 imgur,以及使用选项卡而不是围栏块对源代码进行降价渲染。您可以增强此功能以添加其他有用的选项。

stackify <- function(rmd_file, ...){
  require(knitr)
  opts_knit$set(upload.fun = imgur_upload) 
  render_markdown(strict = TRUE)
  out <- knit(rmd_file, ...)
  return(invisible(out))
}

更新:我在您的测试文件上测试了这个功能,它在启用的 stats.stackexchange.com 上表现良好mathjax

于 2012-06-17T03:44:30.590 回答
4

尽管我仍然想阅读其他建议,但我还是以@Ramnath 的回答为起点,将这个脚本组合在一起。它输出一个 HTML 片段而不是 Markdown。

Rscript -e 'rmd_file <- dir(pattern="rmd"); md_file <- sub("rmd", "md", rmd_file); html_file <- sub("rmd", "html", rmd_file); require(methods); require(knitr); require(markdown); opts_knit$set(upload.fun = imgur_upload); knit(rmd_file); markdownToHTML(md_file, html_file, options="fragment_only") '
  • 它假定工作目录中有一个rmd文件。我想可以以更复杂的方式选择 rmd 文件。
  • 它要求安装knitrmarkdown包。
  • 我认为因为我们使用的是“Rscript”,所以methods需要加载包。
  • 它将图像上传到 imgur
  • markdownToHTML 仅将代码片段导出为 html 文件。然后可以将此文件的内容复制到 Stack Exchange 答案中。

结果看起来还不错。它克服了过多的空白行的问题。但是,输出不是降价,这使得结果更难编辑。

于 2012-06-17T12:01:24.410 回答
1

RStudio 使用 pandoc,因此您可以指定适合您需要的降价变体。在 .Rmd 文件的开头:

---
output:
  md_document:
    variant: markdown_strict+autolink_bare_uris
---

然后,您应该能够将生成的文件内容复制/粘贴到 StackExchange。

请参阅:http ://rmarkdown.rstudio.com/markdown_document_format.html#markdown-variants

于 2014-09-27T18:58:46.257 回答