web-dev-qa-db-ja.com

Rマークダウンのコードブロックに改行を追加する

R Markdownでknitrパッケージを使用して、HTMLレポートを作成しています。 '+'を使用すると、コードを別々の行に保持するのに問題があります。

例えば、

```{r}
ggplot2(mydata, aes(x, y)) +
   geom_point()
```

次のHTMLドキュメントを返します

ggplot2(mydata, aes(x, y)) + geom_point()

通常はこれで問題ありませんが、行を追加し始めると問題が発生します。行を分離しておくと、コードをわかりやすくなります。以下を実行します。

```{r}
ggplot2(mydata, aes(x, y)) +
   geom_point() +
   geom_line() +
   opts(panel.background = theme_rect(fill = "lightsteelblue2"),
        panel.border = theme_rect(col = "grey"),
        panel.grid.major = theme_line(col = "grey90"),
        axis.ticks = theme_blank(),
        axis.text.x  = theme_text (size = 14, vjust = 0),
        axis.text.y  = theme_text (size = 14, hjust = 1.3))
```

すべてのコードが1行で表示され、追跡が困難になります。

ggplot2(mydata, aes(x, y)) + geom_point() + geom_line() + opts(panel.background = theme_rect(fill = "lightsteelblue2"), panel.border = theme_rect(col = "grey"), panel.grid.major = theme_line(col = "grey90"), axis.ticks = theme_blank(), axis.text.x  = theme_text (size = 14, vjust = 0), axis.text.y  = theme_text (size = 14, hjust = 1.3))

これを解決するための助けをいただければ幸いです。

17
susjoh

チャンクオプションを試してくださいtidy = FALSE

```{r tidy=FALSE}
ggplot2(mydata, aes(x, y)) +
  geom_point() +
  geom_line() +
  opts(panel.background = theme_rect(fill = "lightsteelblue2"),
       panel.border = theme_rect(col = "grey"),
       panel.grid.major = theme_line(col = "grey90"),
       axis.ticks = theme_blank(),
       axis.text.x  = theme_text (size = 14, vjust = 0),
       axis.text.y  = theme_text (size = 14, hjust = 1.3))
```
19
kohske

チャンクの「整頓された」設定をfalseに変更する方法の1つは、コマンドの途中でコメントを追加にすることです。これにより、チャンク全体が整頓されていないものとして処理されるようになり、コードに含まれている(または含まれていない)改行が尊重されます。残念ながら、これは特定の場所(特定の行)に改行を追加しません。

例:以下の生のテキストをRmdファイルにコピーし、knitrで処理します。

整頓された(つまりデフォルト)

入力

```{r eval=FALSE}
# Line comments do not seem to change tidiness.
list(
    sublist=list( 
        suba=10, subb=20 ),
    a=1,
    b=2 ) # End of line comment does not seem to change tidiness.

list(
    sublist=list( 
        suba=10, subb=20 ),
    a=1,
    b=2 )

```

出力

# Line comments do not seem to change tidiness.
list(sublist = list(suba = 10, subb = 20), a = 1, b = 2) # End of line comment does not seem to change tidiness.

list(sublist = list(suba = 10, subb = 20), a = 1, b = 2)

片付けられていない

入力

```{r eval=FALSE}
list(
    sublist=list( 
        suba=10, subb=20 ),
    a=1, # Mid-command comment seems to "untidy" the chunk.
    b=2 )

list(
    sublist=list( 
        suba=10, subb=20 ),
    a=1,
    b=2 )

```

出力

list(
    sublist=list(
        suba=10, subb=20 ),
    a=1, # Mid-command comment seems to "untidy" the chunk.
    b=2 )

list(
    sublist=list(
        suba=10, subb=20 ),
    a=1,
    b=2 )
2
Kalin