Добавление разрыва строки к блокам кода в R Markdown

Я использую пакет knitr с R Markdown для создания 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))
```

В результате весь код выйдет в одну строку, что затруднит выполнение:

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

попробуйте вариант chunk 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))
```

Ответ 2

Один из способов, с помощью которого я могу изменить настройку "аккуратного" фрагмента на false, - это добавить комментарий средней команды. Кажется, что весь кусок обрабатывается как не-аккуратный, тем самым соблюдая разрывы строк, которые у вас есть (или нет) в вашем коде. К сожалению, это не добавляет разрыв строки в определенном месте (для определенной строки).

Пример. Скопируйте исходный текст ниже в файл 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)

Untidied

Ввод

```{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 )