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:

Siehe auch