KnitR/Mathematische Formeln
Einleitung
In R-Markdown kann man mathematische Formeln
- im Text oder
\( formel \)bzw.$ formel $ - als abgesetzte zentrierte Formel kann die Formel mit doppelten Dollarzeichen
$$ formel $$eingerahmt werden.
ausgeben lassen. Die mathematischen Formeln werden in der LaTeX-Notation definiert.
Inline-Math - Mathematischen Formel im Text
Um eine mathematische Formel im Text auszugeben (wie z.B. ) kann den auch im Mediawiki verwendeten Latex-Code auch im R-Markdown-Dokument verwenden. Die LaTeX-Notation des mathematischen Ausdruck wird dann mit dem öffnenden Begrenzer \( und dem schließende Begrenzen \) eingerahmt. Der Ausdruck wird wie folgt in R-Markdowntext eingefügt.
Die Formel für die Quadratwurzel ist \( \sqrt{x} \) </math>.
Diese Textstelle nach der Ausführung von KnitR wird im PDF-Output als
- Die Formel für die Quadratwurzel ist
ausgegeben.
Block-Math - abgesetzte mathematischen Formel
Um eine mathematische Formel als abgesetzte Formel auszugeben, wird die mathematische Formel selbst wieder in der LaTeX-Notation beschrieben. Die Begrenzer (Delimiter) für die abgesetzte mathematische Formeln sind die doppelten Dollarzeichen. Die folgende Formel sollt im R-Markdown-Dokument nach dem knitr'n ausgegeben werden: Im KnitR-Dokument wird die Block-Math-Formel wie folgt eingegeben:
$$
\frac{1}{1-q} = \sum_{n=0}^{\infty} q^n
$$
Dies wird im PDF-Output erscheint dann die obige abgesetzte mathematik Formel für die geometrische Reihe.
Alternativer inline-Math-Delimiter
Der alternative inline-Math-Delimiter ist das Dollarzeichen $. Diese kann auch als Alternative verwendet werden, um mathematische Formeln im Text auszugeben.
Die Formel für die Quadratwurzel ist $x^2$.
Dies wird im PDF-Output als
- "Die Formel für die Quadratwurzel ist ""
Alternativer block-Math-Delimiter
Der alternative block-Math-Delimiter kann als öffnende und schließende Tags \[ formel \] . Diese kann auch als Alternative verwendet werden, um mathematische Formeln im Text auszugeben.
Die Formel für die geometrische Reihe lautet:
\[
\frac{1}{1-q} = \sum_{n=0}^{\infty} q^n
\]
Dies wird im PDF-Output als
- "Die Formel für die geometrische Reihe lautet "
Ausgabe von berechneten Matrizen im Text
Der folgende Abschnitt zeigt, wie man Operationen in R auf Matrizen und Vektoren als Spaltenvektoren ausführen können und das Ergebnis als Matrix formatiert auszugeben.
Berechnete Matrizen LaTeX-Formeln
Eine Matrix in R ist eine Datenstruktur. Mathematische Ausdrücke werden sowohl im Mediawiki als auch R-Markdown in der LaTeX definiert. Die folgende Funktion erzeugt eine Matrix als Zeichenkette (String), die man in KnitR in mathematischen Formeln verwenden kann und dann die Zahlenwert der mit R berechneten Matrix enthält.
matrix2latex <- function(pA) {
# Überprüfe, ob pA eine Matrix ist
if (!is.matrix(pA)) {
stop("pA muss eine Matrix sein")
}
### Schliesse die pmatrix-Umgebung
latex_string <- "\\begin{pmatrix} \n"
#### Fuege die Zeilen der Matrix hinzu
for (i in 1:nrow(pA)) {
for (j in 1:ncol(pA)) {
latex_string <- paste0(latex_string, " ", pA[i, j], " ")
if (j < ncol(pA)) {
latex_string <- paste0(latex_string, " & ")
}
}
latex_string <- paste0(latex_string, "\\\\ \n")
}
### Schliesse die pmatrix-Umgebung
latex_string <- paste0(latex_string, "\\end{pmatrix}")
return(latex_string)
}
Matrizen als LaTeX-Formeln berechnen
Nun kann man die Ausgabe der Matrix in LaTeX testen. Das erfolgt in 3 Schritten:
- Berechnung einer Matrix in R
### Berechnung in einer Matrix in R
# Erstelle eine Matrix
A <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
x <- matrix(c(-1, 1, -2), nrow = 3, ncol = 1)
y <- A %*% x
### Konvertierung in Latex-Strings
# Konvertiere die Matrix A in einen LaTeX-String
latex4A <- matrix2latex(A)
latex4x <- matrix2latex(x)
latex4y <- matrix2latex(y)
Ausgabe der Resultate in Formel
Nun werden die im Codechunk definierten Matrizen und das Ergebnis einer Matrixmultiplikation in Latex ausgegeben. Die Syntax in R-Markdown ist wie folgt. KnitR ersetzt dann die Variable durch die berechneten LaTeX-Ausgaben der Matrizen und Vektoren.
$$
A \cdot x = `r latex4A` \cdot `r latex4x` = `r latex4y`
$$
Beispielausgabe der Matrix
Die Matrix und der Spaltenvektor wurden im R-Code definiert und der Spaltenvektor wurde mit R über y <- A %*% x berechnet: