Вот такой подход, который автоматизирует большую часть генерации отчетов и уменьшает количество кода, который вам нужно ввести. Для начала вы можете превратить это в parameterized report, что упростит создание рабочих листов, используя разные значения x
. Вот пример:
В вашем документе rmarkdown вы объявляете параметры x
и n
в заголовке yaml. n
- количество случайных значений, которые вы хотите создать для каждого значения x
. В x
и n
значения в заголовке YAML просто по умолчанию knitr использует, если никакие другие значения не вводятся при визуализации отчета:
---
output: html_document
params:
x: !r c(1,5,10)
n: 10
---
Затем, в том же rmarkdown документе вы бы текст и код для Вашего Рабочий лист. Вы получаете доступ к параметрам x
и n
с params$x
и params$n
, соответственно.
Например, остальная часть документа rmarkdown может выглядеть как код ниже. Мы помещаем x
в список под названием x_vals
с именованными элементами, так что результирующие имена столбцов на выходе будут именами элементов списка. Мы передаем этот список sapply
, чтобы получить столбец n
случайных значений для каждого значения x
. Весь оператор sapply
обернут в kable
, который создает таблицу в формате rmarkdown.
```{r, include=FALSE}
library(knitr)
```
```{r, echo=FALSE}
# Create a named list of the x values that we passed into this document
x_vals = as.list(setNames(params$x, paste0("x=", params$x)))
kable(sapply(x_vals, function(i) round(runif(params$n, 13.5, 15.5) + i, 2)))
```
Теперь вы можете нажать кнопку «вязать» и он будет производить таблицу, используя значения параметров по умолчанию:
Если вместо этого вы хотите использовать различные значения для x
и/или n
, открыть отдельный файл R сценария и введите следующую команду:
rmarkdown::render("Worksheet.Rmd",
params = list(x = c(2,4,6,8),
n = 5),
output_file="Worksheet.html")
в приведенном выше коде,Функциякомпилирует документ rmarkdown, который мы только что создали, но с новыми значениями x
и n
и сохраняет вывод в файл с именем Worksheet.html
. (Я предположил, что мы сохранили rmarkdown документ в файл с именем Worksheet.Rmd
.) Вот что вывод выглядит следующим образом:
Вы также можете, конечно, добавить параметры для нижнего и верхнего пределы функции runif
, а не жесткого кодирования их как 13,5 и 15,5.
Если вы хотите создать несколько рабочих листов, каждый с различными x
значениями, вы можете положить render
в цикле:
df = expand.grid(1:3,5:6,10:11)
for (i in 1:nrow(df)) {
rmarkdown::render("Worksheet.Rmd",
params = list(x=unlist(df[i,]), n=10),
output_file=paste0(paste(unlist(df[i,]),collapse="_"),".html"))
}
Создание и хранение данных в скрытой куске и печатать данные в виде таблицы, когда вы нужно? – A5C1D2H2I1M1N2O1R2T1