Подтвердить что ты не робот

Программно вставлять текст, заголовки и списки с R-снижением

При использовании R-уценки, если вы хотите добавить текст с помощью кода, есть несколько простых способов сделать это.

Это также верно для таблиц, использование команды kable очень просто.

Однако представьте, что вы хотите программно вставлять заголовки или списки в свой отчет.

```{r, results='asis'}
headers=list("We","are","your","friends")
for (i in list_a){
    #add i as header
}
```

и вы хотите, чтобы это было так же, как и запись в файле Rmd:

#We
#are
#your
#friends

Другим примером может быть создание заголовков вместо списков:

```{r, results='asis'}
list_a=list("We","are","your","friends")
for (i in list_a){
    #print i to a rmd list
}
```

как и раньше, должен иметь тот же результат, что и запись:

*We
*are
*your
*friends

Это не только проблема форматирования, так как таблица контекста для файлов Rmd создается динамически в соответствии с этими заголовками.

4b9b3361

Ответ 1

Вам нужно создать нужную разметку в R и использовать ее вместе с аргументом results = 'asis' в ваших параметрах chunk. Следовательно, что-то вроде следующего будет делать то, что вы хотите:

```{r, results='asis'}
headers <- list("We","are","your","friends")
for (i in headers){
  cat("#", i, "\n")
}
```

В цикле for будет создан вывод

# We 
# are 
# your 
# friends 

который используется непосредственно в качестве входного документа .Rmd.

Ответ 2

Используйте пакет pander, который преобразует R объектов в уценку Pandoc:

> headers=list("We","are","your","friends")
> list_a=list("We","are","your","friends")
> library(pander)
> pandoc.header(headers)

# We

# are

# your

# friends
> pander(list_a)


  * We
  * are
  * your
  * friends

<!-- end of list -->

В первом примере для создания заголовков использовалась вспомогательная функция, а вторая демо просто называлась общий метод S3, который может эффективно преобразовывать множество объектов R в уценку.