I execute a Rmarkdown document from a R script:
wd <- "my working directory"
# Data preparation
species1 <- sample(c("setosa", "versicolor", "virginica"), 1)
species2 <- species1
while (species2 == species1) {
species2 <- sample(c("setosa", "versicolor", "virginica"), 1)
}
# Create pdf with solutions
show.solutions <- T
rmarkdown::render(input = "uebung02.Rmd", output_file = "uebung02 - Lösung.pdf", output_dir = paste(wd, "pdf", sep = ""))
Then rmarkdown::render
renders ex02.Rmd (this is what's in this document):
---
title: "Übung 02"
subtitle: "Graphische Darstellung von Daten und Stichproben-Kennwerte"
output: pdf_document
---
```{r setup, include = F}
knitr::opts_chunk$set(echo = TRUE)
```
Achte genau auf die Aufgabenstellung, in der stets aufgeführt ist, ob Du nur eine Lösung (Wert, Erklärung), den hierfür verwendeten R-Befehl oder beides angeben sollst.
Versuche Probleme erst selbst zu lösen, bevor Du Dich an einen der TutorInnen wendest. Solltest Du alleine nicht weiterkommen, können diese Dir jederzeit helfen.
Verwende zur Bearbeitung der Aufgaben den Editor (ein R-Skript), nicht die Console! Das hilft nicht nur Dir Fehler, die Du irgendwann vllt. gemacht hast, leichter auszubessern, sondern auch den TutorInnen, um auftretende Probleme leichter verstehen zu können.
```{r, prep.ex01, echo = show.solutions, eval = show.solutions}
# Korrekteure: Dieser Part ist Teil der Randomisierung der Aufgaben
species1
species2
```
1. In dieser Aufgabe sollst Du einige morphometrische Daten für Blütenblätter von *Iris* sp. graphisch aufbereiten. Die Daten liegen bereits in einem Beispieldatensatz in R vor und können mit ```iris``` aufgerufen werden. Einen Überblick über den Datensatz selbst kannst Du Dir mit ```View(iris)``` verschaffen. (Achtung: Da R case sensitive ist, wirst Du mit ```view(iris)``` nicht weiterkommen. Achte in R also generell auf Groß- und Kleinschreibung.)
a. Plotte für *Iris* *`r species1`* die Sepal-Länge (y-Achse) gegen die Petal-Länge (x-Achse). Die Datenpunkte sollen dabei als rote ausgefüllte Quadrate erscheinen. Limitiere die x-Achse auf Werte von 1 bis 7 und zeichne die y-Achse von 4 bis 8. (Wie das mit dem limitieren der Achsen auf bestimmte Werte funktioniert, findest Du in der Hilfe des ```plot```-Commands.) Bezeichne außerdem den Achsen mit "Petal-Länge" bzw. "Sepal-Länge". Gebe in der Lösung den Code an.
```{r, ex01a, echo = show.solutions, eval = F}
plot(iris$Petal.Length[iris$Species == species1],
iris$Sepal.Length[iris$Species == species1],
pch = 15, col = "red", xlim = c(1, 7), ylim = c(4, 8), xlab = "Petal-Länge",
ylab = "Sepal-Länge")
```
b. Füge nun als blau gefüllte Kreise noch die Werte der selben Variablen für die Art *Iris* *`r species2`* hinzu. Gebe auch hierfür den von Dir verwendeten Code an und lade die erstellte Abbildung in OLAT hoch.
```{r, ex01b, echo = show.solutions, eval = F}
points(iris$Petal.Length[iris$Species == species2],
iris$Sepal.Length[iris$Species == species2],
pch = 16, col = "blue")
```
```{r, ex01plot, echo = F, eval = T}
plot(iris$Petal.Length[iris$Species == species1],
iris$Sepal.Length[iris$Species == species1],
pch = 15, col = "red", xlim = c(1, 7), ylim = c(4, 8), xlab = "Petal-Länge",
ylab = "Sepal-Länge")
points(iris$Petal.Length[iris$Species == species2],
iris$Sepal.Length[iris$Species == species2],
pch = 16, col = "blue")
```
However, R cannot render the file. It stops with this error:
! Missing $ inserted.
<inserted text>
$
l.206 ...ösung_files/figure-latex/ex01plot-1.pdf}
Error: LaTeX failed to compile D:/biol109 - Biostatistik/Übungen/pdf/uebung02 - Lösung.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See uebung02 - Lösung.log for more info.
First I thought this error occured due to the usage of dollars to call variables in the iris
dataset (e.g. iris$Petal.Length
). However, this same error remains when using indices instead.
Thus, I wonder what causes this error and how I can solve it so R/Tex can render the pdf?
Any help is appreciated! Many thanks in advance!
An update of my MiKTeX installation surprisingly solved the problems.