Ответ 1
Этот вопрос похож на на этот, хотя он основан на LateX/RNW. Кроме того, этот ответ демонстрирует динамическое создание документа rmarkdown. Однако ни один из вопросов не является точным дубликатом этого.
В принципе, есть два умственных шага:
-
Укажите разметку разметки, необходимую для каждого раздела. Это может быть что-то вроде строк
## This is section <section_name> Section data is `<section_data>`. Additional section text is: <section_text>.
-
Напишите код R, который генерирует эту разметку, заменив заполнители соответствующими значениями.
Для шага 2 использование sprintf
является естественным кандидатом для объединения статического и динамического текста. Не забудьте использовать параметры chunk results = "asis"
, чтобы предотвратить knitr
от добавления форматирования к вашему выводу и использовать cat
(вместо print
), чтобы R не добавлял дополнительные данные, такие как кавычки и номера элементов.
Я изменил структуру входных данных немного для ясности (используя data.frame
вместо независимых векторов section_names
и section_data
).
```{r echo = FALSE, results = "asis"}
input <- data.frame(
name = LETTERS[1:4],
data = runif(n = 4),
text = replicate(4, paste(sample(x = LETTERS, size = 100, replace = TRUE), collapse = "")),
stringsAsFactors = FALSE)
template <- "## This is section %s
Section data is `%0.2f`.
Additional section text is: %s.
" # dont't forget the newline
for (i in seq(nrow(input))) {
current <- input[i, ]
cat(sprintf(template, current$name, current$data, current$text))
}
```
Вывод:
Это раздел A
Данные разделов
0.83
. Дополнительный текст раздела: PUFTZQFCYJFNENMAAUDPTWIKLBSVKWMJWODFHSPRJRROTVDGNEROBVQPLLMVNPOUUHGVGRPMKAOAOMVYXKMGMUHNYWZGPRAWPYLU.Это раздел B
Данные разделов
0.49
. Дополнительный текст раздела: PFTYCGFSGSMAYSSCZXWLNLDOQEBJYEVSJIYDJPEPSWQBNWJVRUKBTYIUSTOICFKJFEJCWCAYBCQSRTXUDEQLLXCZNPUKNLJIQJXE.Это раздел C
Данные разделов
0.58
. Дополнительный текст раздела: FCJDDDMNLBUSJMCZVSBPYWCKSFJEARBXXFPAGBTKCWKHPEDGYWYTNGLVGQGJAFZRUMNSDCHKTTMGRFNSUZKFLOUGNWHUBNLVMGDB.Это раздел D
Данные разделов
0.52
. Дополнительный текст раздела: YQIXHABFVQUAAYZNWTZXJDISSLTZJJAZOLJMJSXEENFTUOFOTYKDNNUMFDXLJSWZEVDLCLSYCTSMEXFLBVQYRTBEVZLCTEBPUGTT.