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 (
Para escribir fórmulas matemáticas bien formateadas utilizaremos la sintaxis \(\LaTeX\)
$código$$$código$$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}\].
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\).
| 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}\) |
| 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\) |
| 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\) |
| 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\) |
| 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\) |
| 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\) |
| 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\) |
| 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\) |
| Significado | Código | Resultado |
|---|---|---|
| Chi | \chi |
\(\chi\) |
| Psi | \psi \Psi |
\(\psi\ \Psi\) |
| Omega | \omega \Omega |
\(\omega\ \Omega\) |
| 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}\) |
| 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}\) |
| 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\) |
| 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\) |
| Significado | Código | Resultado |
|---|---|---|
| Seno | \sin |
\(\sin\) |
| Coseno | \cos |
\(\cos\) |
| Tangente | \tan |
\(\tan\) |
| Arcoseno | \arcsin |
\(\arcsin\) |
| Arcocoseno | \arccos |
\(\arccos\) |
| Arcotangente | \arctan |
\(\arctan\) |
| 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\) |
| Significado | Código | Resultado |
|---|---|---|
| Supremo | \sup |
\(\sup\) |
| Ínfimo | \inf |
\(\inf\) |
| Determinante | \det |
\(\det\) |
| Argumento | \arg |
\(\arg\) |
| 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\) |
| 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\) |
| 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}\) |
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)\).
$$\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}\]
$$\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}\]
$$\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}\]
\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.
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
Hay diversas opciones de crear un bloque de código 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
## 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
```{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 ##
| 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 |
```{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
```{r, echo=TRUE, results = “hide”}
sec = 10:20
sec
cumsum(sec)
\n ```r sec = 10:20 sec cumsum(sec)
```{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
```{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
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’