17

動機: R Markdown を使用して簡単に分析した結果を StackExchange サイトに貼り付けたいと思うことがよくあります。これには、Stack OverflowCross Validatedの R タグ、またはCognitive Sciences Stack Exchangeなどのサイトのドメイン固有の分析 (たとえば、 OECD 生命指数データのクイック分析) が含まれます。

デフォルトの変換に関する問題:デフォルトのマークダウン出力はknitr、StackExchange に含めるのに適していません。私が見ることができる主な問題は、

  • 画像はローカルハードドライブを参照しています
  • コード チャンクはタブまたはスペースでインデントされていません。むしろ、github スタイルの Markdown を使用します (つまり、インデントなし)。

つまり、チャンクは次のようになります。

```r
some code
```

出力は次のようになります

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

考慮すべき他の特定の問題もあります。

  • テーブルが適切に含まれていることを確認する
  • Cross Validated や Cognitive Science Stack Exchange などの 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))
}

更新: テスト ファイルでこの関数をテストしましたがmathjax、有効になっている stats.stackexchange.com で適切にレンダリングされます。

于 2012-06-17T03:44:30.590 に答える
4

私はまだ他の提案を読みたいと思っていますが、@Ramnathの回答を出発点として使用して、このスクリプトを一緒にハックしました。Markdown ではなく HTML フラグメントを出力します。

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 ファイルの選択は、より洗練された方法で行うことができると思います。
  • knitrおよびmarkdownパッケージがインストールされている必要があります。
  • 「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 に答える