forked from joanby/r-basic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTema2.Rmd
613 lines (423 loc) · 18.1 KB
/
Tema2.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
---
title: Tema 2 - Documentación con R Markdown
author: Juan Gabriel Gomila & María Santos
output:
ioslides_presentation:
widescreen: true
css: JB_style.css
logo: Imgs/LogoCurso.png
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
```
# Introducción
## Markdown
<l class="definition">R Markdown.
</l> 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](https://en.support.wordpress.com/markdown-quick-reference/)* y la [chuleta](https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf) 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 (<l class="definition">chunks</l>) 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`$$`
<l class="important">¡Cuidado!</l> 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{.example}
**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](http://www.ptep-online.com/ctan/symbols.pdf) 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
<l class="definition">Chunk.</l> Bloque de código.
Los bloques de código de R dentro de un documento R Markdown se indican de la manera siguiente
<div class = "r-code">
`r ''` ```{r}
` x = 1+1`
` x`
`r ''` ```</div>
que resulta en
```{r, eval = FALSE, comment = NA}
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
<div class = "r-code">
`r ''` ```{r PrimerChunk}
` x = 1+2+3`
`r ''` ```</div>
\n
<div class = "r-code">
`r ''` ```{r SegundoChunk}
` y = 1*2*3`
`r ''` ```</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 ''` ```{r, echo=FALSE}
` sec = 10:20`
`sec`
`cumsum(sec)`
`r ''` ```</div>
\n
No aparece
## Parámetros de los chunks
<div class = "r-code">
`r ''` ```{r, echo=TRUE, message = TRUE}
`library(car)`
`head(cars,3)`
`r ''` ```</div>
\n
```{r, echo = TRUE, message = TRUE}
library(car)
head(cars,3)
```
## Parámetros de los chunks
<div class = "r-code">
`r ''` ```{r, echo=TRUE, message = FALSE, comment = NA}
`library(car)`
`head(cars,3)`
`r ''` ```</div>
\n
```{r, echo = TRUE, message = FALSE, comment = NA}
library(car)
head(cars,3)
```
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
<div class = "r-code">
`r ''` ```{r, echo=TRUE, results = "markup"}
` sec = 10:20`
`sec`
`cumsum(sec)`
`r ''` ```</div>
\n
```{r, echo=TRUE, results='markup'}
sec = 10:20
sec
cumsum(sec)
```
## Parámetros de los chunks
<div class = "r-code">
`r ''` ```{r, echo=TRUE, results = "hide"}
` sec = 10:20`
`sec`
`cumsum(sec)`
`r ''` ```</div>
\n
```{r, echo=TRUE, results='hide'}
sec = 10:20
sec
cumsum(sec)
```
## Parámetros de los chunks
<div class = "r-code">
`r ''` ```{r, echo=TRUE, results = "asis"}
` sec = 10:20`
`sec`
`cumsum(sec)`
`r ''` ```</div>
\n
```{r, echo=TRUE, results='asis'}
sec = 10:20
sec
cumsum(sec)
```
## Parámetros de los chunks
<div class = "r-code">
`r ''` ```{r, echo=TRUE, results = "hold"}
` sec = 10:20`
`sec`
`cumsum(sec)`
`r ''` ```</div>
\n
```{r, echo=TRUE, results='hold'}
sec = 10:20
sec
cumsum(sec)
```
# 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 "\u0060r ...\u0060"` ``
<div class = "example">
**Ejemplo**
La raíz cuadrada de 64 es `` `r "\u0060r sqrt(64)\u0060"` `` o, lo que viene siendo lo mismo, $\sqrt{64}=$`` `r "\u0060r sqrt(64)\u0060"` ``
La raíz quinta de 32 es `r 32^(1/5)` o, lo que viene siendo lo mismo, $\sqrt[5]{64}=$ `r 32^(1/5)`.
</div>