Introducción

Markdown

R Markdown. Es un tipo de fichero en el cual podemos intercalar sin problema alguno texto, código y fórmulas matemáticas.

Para la mayor parte de las necesidades de este curso, en lo referente a la creación y composición de este tipo de ficheros, el documento Markdown Quick Reference y la chuleta de R Markdown deberían ser suficientes.

Sin embargo, a lo largo de este curso iremos ampliando estos contenidos en algunos temas cuando lo creamos necesario.

Nosotros, en este tema, veremos cómo controlar el comportamiento de los bloques de código (chunks) al compilar el fichero R Markdown y cómo escribir fórmulas matemáticas bien formateadas.

Fórmulas matemáticas

Cómo escribir

Para escribir fórmulas matemáticas bien formateadas utilizaremos la sintaxis \(\LaTeX\)

  • Para tener ecuaciones o fórmulas en el mismo párrafo, escribimos nuestro código entre dos símbolos de dólar: $código$
  • Si queremos tener ecuaciones o fórmulas centradas en un párrafo aparte, escribimos nuestro código entre dos dobles símbolos de dólar: $$código$$

¡Cuidado! Al escribir una fórmula de la forma indicada anteriormente o simplemente texto en R Markdown, los espacios en blanco son completamente ignorados. RStudio solamente añade los espacios en blanco a partir del significado lógico de sus elementos.

Espacios en blanco

Ejemplo

Para que veáis que RStudio ignora el exceso de espacios en blanco, aquí os damos un ejemplo en el que hemos introducido espacios innecesarios:

Código: En en instituto\(\ \ \ \ \ \) nos enseñaron que las raíces de las ecuaciones de tercer grado, de la forma $Ax^3+Bx^2+Cx+D=0$, se encuentran mediante \textit{la Regla de Ruffini}. Por su parte,\(\ \ \ \ \ \ \ \ \ \) las raíces de las ecuaciones de segundo grado de la forma $\alpha x^2+\beta x+\gamma=0$ se encuentran siguiendo la fórmula $$x = \frac{-\beta\pm\sqrt{\beta^2\(\ \ \ \ \ \ \ \ \ \ \ \ \)-4\alpha\gamma}}{2\alpha}$$.

Resultado: En en instituto nos enseñaron que las raíces de las ecuaciones de tercer grado, de la forma \(Ax^3+Bx^2+Cx+D=0\), se encuentran mediante la Regla de Ruffini. Por su parte, las raíces de las ecuaciones de segundo grado de la forma \(\alpha x^2+\beta x+\gamma=0\) se encuentran siguiendo la fórmula \[x = \frac{-\beta\pm\sqrt{\beta^2 -4\alpha\gamma}}{2\alpha}\].

Símbolos

Hay muchísimos símbolos matemáticos que puedes escribirse con la sintaxis \(\LaTeX\). En el ejemplo anterior ya os hemos mostrado unos pocos. En este tema, nosotros solo veremos los más utilizados.

Para quien quiera ir más allá, aquí os dejamos un documento muy útil con gran cantidad de símbolos de \(\LaTeX\).

Símbolos matemáticos - Básico

Significado Código Resultado
Suma + \(+\)
Resta - \(-\)
Producto \cdot \(\cdot\)
Producto \times \(\times\)
División \div \(\div\)
Potencia a^{x} \(a^{x}\)
Subíndice a_{i} \(a_{i}\)

Símbolos matemáticos - Básico

Significado Código Resultado
Fracción \frac{a}{b} \(\frac{a}{b}\)
Más menos \pm \(\pm\)
Raíz n-ésima \sqrt[n]{x} \(\sqrt[n]{x}\)
Unión \cup \(\cup\)
Intersección \cap \(\cap\)
OR lógico \vee \(\vee\)
AND lógico \wedge \(\wedge\)

Símbolos matemáticos - Relaciones

Significado Código Resultado
Igual = \(=\)
Aproximado \approx \(\approx\)
No igual \ne \(\ne\)
Mayor que > \(>\)
Menor que < \(<\)
Mayor o igual que \ge \(\ge\)
Menor o igual que \le \(\le\)

Símbolos matemáticos - Operadores

Significado Código Resultado
Sumatorio \sum_{i=0}^{n} \(\sum_{i=0}^{n}\)
Productorio \prod_{i=0}^{n} \(\prod_{i=0}^{n}\)
Integral \int_{a}^{b} \(\int_{a}^{b}\)
Unión (grande) \bigcup \(\bigcup\)
Intersección (grande) \bigcap \(\bigcap\)
OR lógico (grande) \bigvee \(\bigvee\)
AND lógico (grande) \bigwedge \(\bigwedge\)

Símbolos matemáticos - Delimitadores

Significado Código Resultado
Paréntesis () \((\ )\)
Corchetes [] \([\ ]\)
Llaves \{ \} \(\{\ \}\)
Diamante \langle \rangle \(\langle\ \rangle\)
Parte entera por defecto \lfloor \rfloor \(\lfloor\ \rfloor\)
Parte entera por exceso \lceil \rceil \(\lceil\ \rceil\)
Espacio en blanco hola\ caracola \(hola\ caracola\)

Símbolos matemáticos - Letras griegas

Significado Código Resultado
Alpha \alpha \(\alpha\)
Beta \beta \(\beta\)
Gamma \gamma \Gamma \(\gamma\ \Gamma\)
Delta \delta \Delta \(\delta\ \Delta\)
Epsilon \epsilon \(\epsilon\)
Epsilon \varepsilon \(\varepsilon\)
Zeta \zeta \(\zeta\)

Símbolos matemáticos - Letras griegas

Significado Código Resultado
Eta \eta \(\eta\)
Theta \theta \Theta \(\theta\ \Theta\)
Kappa \kappa \(\kappa\)
Lambda \lambda \Lambda \(\lambda\ \Lambda\)
Mu \mu \(\mu\)
Nu \nu \(\nu\)
Xi \xi \Xi \(\xi\ \Xi\)

Símbolos matemáticos - Letras griegas

Significado Código Resultado
Pi \pi \Pi \(\pi\ \Pi\)
Rho \rho \(\rho\)
Sigma \sigma \Sigma \(\sigma\ \Sigma\)
Tau \tau \(\tau\)
Upsilon \upsilon \Upsilon \(\upsilon\ \Upsilon\)
Phi \phi \Phi \(\phi\ \Phi\)
Phi \varphi \(\varphi\)

Símbolos matemáticos - Letras griegas

Significado Código Resultado
Chi \chi \(\chi\)
Psi \psi \Psi \(\psi\ \Psi\)
Omega \omega \Omega \(\omega\ \Omega\)

Símbolos matemáticos - Acentos matemáticos

Significado Código Resultado
Gorrito \hat{x} \(\hat{x}\)
Barra \bar{x} \(\bar{x}\)
Punto 1 \dot{x} \(\dot{x}\)
Punto 2 \ddot{x} \(\ddot{x}\)
Punto 3 \dddot{x} \(\dddot{x}\)
Tilde \tilde{x} \(\tilde{x}\)
Vector \vec{x} \(\vec{x}\)

Símbolos matemáticos - Acentos expansibles

Significado Código Resultado
Gorrito \widehat{xyz} \(\widehat{xyz}\)
Barra \overline{xyz} \(\overline{xyz}\)
Subrallado \underline{xyz} \(\underline{xyz}\)
Llave superior \overbrace{xyz} \(\overbrace{xyz}\)
Llave inferior \underbrace{xyz} \(\underbrace{xyz}\)
Tilde \widetilde{xyz} \(\widetilde{xyz}\)
Vector \overrightarrow{xyz} \(\overrightarrow{xyz}\)

Símbolos matemáticos - Flechas

Significado Código Resultado
Simple \leftarrow \rightarrow \(\leftarrow\ \rightarrow\)
Doble \Leftarrow \Rightarrow \(\Leftarrow\ \Rightarrow\)
Simple larga \longleftarrow \longrightarrow \(\longleftarrow\ \longrightarrow\)
Doble larga \Longleftarrow \Longrightarrow \(\Longleftarrow\ \Longrightarrow\)
Doble sentido simple \leftrightarrow \(\leftrightarrow\)
Doble sentido doble \Leftrightarrow \(\Leftrightarrow\)

Símbolos matemáticos - Flechas

Significado Código Resultado
Doble sentido larga simple \longleftrightarrow \(\longleftrightarrow\)
Doble sentido larga doble \Longleftrightarrow \(\Longleftrightarrow\)
Mapea \mapsto \(\mapsto\)
Arriba \uparrow \(\uparrow\)
Abajo \downarrow \(\downarrow\)

Símbolos matemáticos - Funciones

Significado Código Resultado
Seno \sin \(\sin\)
Coseno \cos \(\cos\)
Tangente \tan \(\tan\)
Arcoseno \arcsin \(\arcsin\)
Arcocoseno \arccos \(\arccos\)
Arcotangente \arctan \(\arctan\)

Símbolos matemáticos - Funciones

Significado Código Resultado
Exponencial \exp \(\exp\)
Logaritmo \log \(\log\)
Logaritmo neperiano \ln \(\ln\)
Máximo \max \(\max\)
Mínimo \min \(\min\)
Límite \lim \(\lim\)

Símbolos matemáticos - Funciones

Significado Código Resultado
Supremo \sup \(\sup\)
Ínfimo \inf \(\inf\)
Determinante \det \(\det\)
Argumento \arg \(\arg\)

Símbolos matemáticos - Otros

Significado Código Resultado
Puntos suspensivos bajos \ldots \(\ldots\)
Puntos suspensivos centrados \cdots \(\cdots\)
Puntos suspensivos verticales \vdots \(\vdots\)
Puntos suspensivos diagonales \ddots \(\ddots\)
Cuantificador existencial \exists \(\exists\)
Cuantificador universal \forall \(\forall\)
Infinito \infty \(\infty\)

Símbolos matemáticos - Otros

Significado Código Resultado
Aleph \aleph \(\aleph\)
Conjunto vacío \emptyset \(\emptyset\)
Negación \neg \(\neg\)
Barra invertida \backslash \(\backslash\)
Dollar \$ \(\$\)
Porcentaje \% \(\%\)
Parcial \partial \(\partial\)

Símbolos matemáticos - Tipos de letra

Significado Código Resultado
Negrita \mathbf{palabra} \(\mathbf{palabra}\)
Negrita \boldsymbol{palabra} \(\boldsymbol{palabra}\)
Negrita de pizarra \mathbb{NZQRC} \(\mathbb{NZQRC}\)
Caligráfica \mathcal{NZQRC} \(\mathcal{NZQRC}\)
Gótica \mathfrak{NZQRC} \(\mathfrak{NZQRC}\)

Observaciones

  • A la hora de componer en el interior de un párrafo una fracción, existen dos formas: adaptada al tamaño del texto,$\frac{a}{b}$, que resulta en \(\frac{a}{b}\); o a tamaño real, $\dfrac{a}{b}$, que da lugar a \(\dfrac{a}{b}\).

  • Podemos especificar que los delimitadores se adapten a la altura de la expresión que envuelven utilizando \left y \right. Observad el cambio en el siguiente ejemplo: $(\dfrac{a}{b})$ y $\left(\dfrac{a}{b}\right)$ producen, respectivamente \((\dfrac{a}{b})\) y \(\left(\dfrac{a}{b}\right)\).

Matrices

$$\begin{matrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{matrix}$$

\[\begin{matrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{matrix}\]

$$\begin{pmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{pmatrix}$$

\[\begin{pmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{pmatrix}\]

Matrices

$$\begin{vmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{vmatrix}$$

\[\begin{vmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{vmatrix}\]

$$\begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{bmatrix}$$

\[\begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{bmatrix}\]

Matrices

$$\begin{Bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{Bmatrix}$$

\[\begin{Bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{Bmatrix}\]

$$\begin{Vmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{Vmatrix}$$

\[\begin{Vmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{Vmatrix}\]

Sistema de ecuaciones

\begin{array}{l}\end{array} nos produce una tabla alineada a la izquierda. El hecho de introducir el código \left. \right. hace que el delimitador respectivo no aparezca.

$$\left.\begin{array}{l} ax+by=c\\ ex-fy=g \end{array}\right\}$$

\[\left.\begin{array}{l} ax+by=c\\ ex-fy=g \end{array}\right\}\]

$$|x|=\left\{\begin{array}{rr} -x & \text{si }x\le 0\\ x & \text{si }x\ge 0 \end{array}\right.$$

\[|x|=\left\{\begin{array}{rr} -x & \text{si }x\le 0\\ x & \text{si }x\ge 0 \end{array}\right.\]

La función text{} nos permite introducir texto en fórmulas matemáticas.

Parámetros de los chuncks de R

Chunks de R

Chunk. Bloque de código.

Los bloques de código de R dentro de un documento R Markdown se indican de la manera siguiente

` x = 1+1`

` x`

```</div>

que resulta en


```r
x = 1+1
x

Chunks de R

Hay diversas opciones de crear un bloque de código de R:

  • Ir al menú desplegable de “Chunks” y seleccionar el de R
  • Introducir manualmente
  • Alt + Command + I (para Mac) o Alt + Command + I (para Windows)

Chunks de R

A los chunks se les puede poner etiqueta, para así localizarlos de manera más fácil. Por ejemplo

```{r PrimerChunk}

x = 1+2+3

\n


<div class = "r-code">
```{r SegundoChunk}

` y = 1*2*3`

```</div>




## Parámetros de los chunks

La parte entre llaves también puede contener diversos parámetros, separados por comas entre ellos y separados de la etiqueta (o de r, si hemos decidido no poner ninguna).

Estos parámetros determinan el comportamiento del bloque al compilar el documento pulsando el botón `Knit` situado en la barra superior del área de trabajo.

## Parámetros de los chunks

Código |  Significado                                  
--------------------|--------------------
`echo` | Si lo igualamos a `TRUE`, que es el valor por defecto, estaremos diciendo que queremos que se muestre el código fuente del chunk. En cambio, igualado a `FALSE`, no se mostrará
`eval` | Si lo igualamos a `TRUE`, que es el valor por defecto, estaremos diciendo que queremos que se evalúe el código. En cambio, igualado a `FALSE`, no se evaluará
`message` | Nos permite indicar si queremos que se muestren los mensajes que R produce al ejecutar código. Igualado a `TRUE` se muestran, igualado a `FALSE` no
`warning` | Nos permite indicar si queremos que se muestren los mensajes de advertencia que producen algunas funciones al ejecutarse. Igualado a `TRUE` se muestran, igualado a `FALSE` no

## Parámetros de los chunks

<div class = "r-code">
```{r, echo=FALSE}

` sec = 10:20`

`sec`

`cumsum(sec)`

```</div>

\n

No aparece

[1] 10 11 12 13 14 15 16 17 18 19 20



[1] 10 21 33 46 60 75 91 108 126 145 165



## Parámetros de los chunks

<div class = "r-code">
 ```{r, echo=TRUE, message = TRUE}

`library(car)`

`head(cars,3)`

 ```</div>

\n


```r
library(car)
## Loading required package: carData
head(cars,3)
##   speed dist
## 1     4    2
## 2     4   10
## 3     7    4

Parámetros de los chunks

```{r, echo=TRUE, message = FALSE, comment = NA}

library(car)

head(cars,3)

\n


```r
library(car)
head(cars,3)
  speed dist
1     4    2
2     4   10
3     7    4

Fijaos que comment=NA evita que aparezcan los ##

Parámetros de los chunks

Significado Código Resultado
results markup Valor por defecto. Nos muestra los resultados en el documento final línea a línea, encabezados por ##
results hide No se nos muestra el resultado en el documento final
results asis Nos devuelve los resultados línea a línea de manera literal en el documento final y el programa con el que se abre el documento final los interpreta como texto y formatea adecuadamente
results hold Miestra todos los resultados al final del bloque de código

Parámetros de los chunks

```{r, echo=TRUE, results = “markup”}

sec = 10:20

sec

cumsum(sec)

\n


```r
sec = 10:20
sec
##  [1] 10 11 12 13 14 15 16 17 18 19 20
cumsum(sec)
##  [1]  10  21  33  46  60  75  91 108 126 145 165

Parámetros de los chunks

```{r, echo=TRUE, results = “hide”}

sec = 10:20

sec

cumsum(sec)

\n


```r
sec = 10:20
sec
cumsum(sec)

Parámetros de los chunks

```{r, echo=TRUE, results = “asis”}

sec = 10:20

sec

cumsum(sec)

\n


```r
sec = 10:20
sec

[1] 10 11 12 13 14 15 16 17 18 19 20

cumsum(sec)

[1] 10 21 33 46 60 75 91 108 126 145 165

Parámetros de los chunks

```{r, echo=TRUE, results = “hold”}

sec = 10:20

sec

cumsum(sec)

\n


```r
sec = 10:20
sec
cumsum(sec)
##  [1] 10 11 12 13 14 15 16 17 18 19 20
##  [1]  10  21  33  46  60  75  91 108 126 145 165

Los chunks en modo línea

Los chunks en modo línea

Con lo explicado hasta ahora, solamente hemos generado resultados en la línea aparte

Para introducir una parte de código dentro de un párrafo y que se ejecute al comilarse el documento mostrando así el resultado final, hay que hacerlo utilizando `r ...`

Ejemplo

La raíz cuadrada de 64 es `r sqrt(64)` o, lo que viene siendo lo mismo, \(\sqrt{64}=\)`r sqrt(64)`

La raíz quinta de 32 es 2 o, lo que viene siendo lo mismo, \(\sqrt[5]{64}=\) 2.

Este año he hecho ‘r n’ examenes, con una media \(\overline{x}=\) ‘r media’ y una desviación tìpica de \(s=\) ‘r desv.tip’