Hier ist ein Ansatz, der einen Großteil der Berichterstellung automatisiert und die Menge an Code reduziert, die Sie eingeben müssen. Für den Anfang können Sie dies in eine parameterized report verwandeln, die es einfacher machen würde, Arbeitsblätter mit verschiedenen Werten von x
zu erstellen. Hier ein Beispiel:
In Ihrem Rmarkdown-Dokument würden Sie die Parameter x
und n
im yaml-Header deklarieren. n
ist die Anzahl der zufälligen Werte, die Sie für jeden Wert von x
produzieren möchten. Die x
und n
Werte im yaml Header sind nur die Standardwerte knitr verwendet, wenn keine andere Werte eingegeben werden, wenn Sie den Bericht machen:
---
output: html_document
params:
x: !r c(1,5,10)
n: 10
---
Dann in dem gleichen rmarkdown Dokument würden Sie den Text und Code haben für Ihre Arbeitsblatt. Sie erreichen die Parameter x
und n
mit params$x
bzw. params$n
.
Zum Beispiel könnte der Rest des Rmarkdown-Dokuments wie der folgende Code aussehen. Wir setzen x
in eine Liste namens x_vals
mit benannten Elementen, so dass die resultierenden Spaltennamen in der Ausgabe die Namen der Listenelemente sind. Wir geben diese Liste an , um eine Spalte von n
zufällige Werte für jeden Wert von x
zu erhalten. Die gesamte sapply
-Anweisung ist in kable
eingeschlossen, die eine Tabelle im Rmarkdown-Format erstellt.
```{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)))
```
Sie können nun auf die Schaltfläche „stricken“ und es wird eine Tabelle mit den Standardparameterwerte erzeugen:
Wenn Sie stattdessen unterschiedliche Werte für x
und/verwenden möchten oder n
, öffnen Sie eine separate R Script-Datei und geben Sie den folgenden:
rmarkdown::render("Worksheet.Rmd",
params = list(x = c(2,4,6,8),
n = 5),
output_file="Worksheet.html")
In dem obigen Code, der render
Funktion kompiliert das gerade erstellte rmarkdown-Dokument mit den neuen Werten x
und n
und speichert die Ausgabe in einer Datei mit der Bezeichnung Worksheet.html
. (Ich bin davon ausgegangen, dass wir die rmarkdown Dokument in einer Datei Worksheet.Rmd
genannt gespeichert haben.) Hier ist, was die Ausgabe wie folgt aussieht:
Sie können natürlich auch, fügen Sie Parameter für die unteren und oberen Grenzen der runif
-Funktion, anstatt sie als 13.5 und 15.5 hart zu kodieren.
Wenn Sie mehrere Arbeitsblätter erstellen möchten, die jeweils mit unterschiedlichen x
Werten können Sie render
in einer Schleife setzen:
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"))
}
erstellen und die Daten in einer versteckten Klumpen speichern und die Daten als Tabelle drucken, wenn Sie müssen? – A5C1D2H2I1M1N2O1R2T1