LoginSignup
10
9

More than 5 years have passed since last update.

R MarkdownでRチャンクをコードブロックとして表示したい

Last updated at Posted at 2016-11-07

タイトルの通りです。

やり方

以下のようにやります:

````
`r ''````{r}
summary(cars)
`r ''````
````

このようにRmd上に記述すると,html出力では以下のようにrenderされます:

1212.png

解説

まず,以下の前提があります:

  • R MarkdownはPandoc Markdownの文法に従う
  • 上記のテクニックはPandoc Markdownの応用

コードブロックをコードブロックで囲むには

Pandoc Markdownでは,コードブロックを示す記号(バッククオート×3)をコードブロック内に記述する方法として,「そのバッククオートよりも多い連続バッククオート(たとえばバッククオート×4)で挟みこめばOK」というのがあります。
これを利用すると,通常のコードブロックは以下のように記述できます:

````
```
(コード内容)
```
````

通常のコードブロックではこれでOKなのですが,Rチャンクの場合,これが適用できません。それは,knitした際にコードブロック内であろうともRチャンク部分を評価してしまうからです。

(Rチャンクが評価される例)
````
```{r}
(Rのコード)
```
````

この場合どうすればいいかというと,Rチャンク記号の前に,インラインRコードを差し込むと本体の評価を回避できます:

````
`r ''````{r}
summary(cars)
`r ''````
````

`r ''`というのを上記のように行頭に置くことで,その行のRの評価が終了されるためです。この結果生成されるこの箇所のmdが以下のようになります:

````
```{r}
summary(cars)
```
````

この時点でファイルはmdになっているので,あとはこれをPandocが処理してhtmlにするため,前述の画像のような出力となります。

補足: QiitaにRチャンクを記述するには

QiitaにRチャンク(というかコードブロック)をコードブロックとして記述するには,行頭に半角スペース4つを各行に置いてください。1この「行頭半角スペース4つ」というのは,Markdown記法でコードブロックを意味します。なので,Qiitaでコードブロック自体をコードブロックとして表記したい場合は,そのようにしてください。

追記: このコードブロックの前後行は必ず空行を入れておいてください。これは必須です。

詳しくはこの記事を編集モード(「編集リクエストを送る」をクリック)で覗いてみてください。

Enjoy!


  1. QiitaはQiitaのMarkdown記法があるようで,Pandoc Markdownではないです。ほんとにややこしい…。 

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9