Программно вставлять текст, заголовки и списки с 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 создается динамически в соответствии с этими заголовками.
Ответы
Ответ 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 в уценку.