3 Métodos
Describimos nuestros métodos en este capítulo.
3.1 Código R
Ver https://bookdown.org/yihui/bookdown/r-code.html
El siguiente chunk con código R en el fichero R Markdown:
` ``{r chunk-label, echo = FALSE, fig.cap = 'A figure caption.'}
1 + 1
rnorm(10) # 10 random numbers
plot(dist ~ speed, cars) # a scatterplot
` ``
produce la siguiente salida:
## [1] 2
## [1] 0.11867281 0.46417189 1.40006207 -0.70326631 -1.37673615
## [6] -0.32577660 0.05792895 -0.02933921 -0.71725604 -0.63069344
Podemos insertar gráficos cara a cara utilizando el siguiente código:
`` `{r out.width='45%',fig.show='hold',fig.align='center',fig.cap="Dos gráficos R cara a cara"}
par(mar = c(4, 4, 0.1, 0.1))
plot(pressure, pch = 19, type = "b")
plot(cars, pch = 19)
`` `
Produce la salida que vemos a continuación:
3.2 Fórmulas matemáticas en R Markdown con LaTeX
Se pueden escribir ecuaciones dentro del texto escribiendo entre una pareja de símbolos del dólar $
usando la sintaxis LaTeX, por ejemplo, $f(k) = {n \choose k} p^{k} (1-p)^{n-k}$
(la salida será: \(f(k) = {n \choose k} p^{k} (1-p)^{n-k}\)).
Las expresiones matemáticas que quieran presentarse centradas en un nueva línea pueden ser escritas utilizando un par de dobles símbolos del dólar $$
, por ejemplo,
$$ f(k) = {n \choose k} p^{k} (1-p)^{n-k} $$
producirá la siguiente salida:
\[ f(k) = {n \choose k} p^{k} (1-p)^{n-k} \]
Para numerar y hacer referencias a ecuaciones, deben ponerse en los entornos “equation” y utilizar etiquetas, por ejemplo:
\begin{equation}
f(k) = {n \choose k} p^{k} (1-p)^{n-k}
\label{eq:binom}
\end{equation}
La ecuación se mostraría del siguiente modo:
\[\begin{equation} f(k) = {n \choose k} p^{k} (1-p)^{n-k} \label{eq:binom} \end{equation}\]Para referirnos a ella en cualquier parte del documento escribiríamos: \@ref(eq:binom)
, por ejemplo, esto se vería en el texto como vea la ecuación \ref{eq:binom}. En “bookdown”, siempre se deben etiquetar las ecuaciones con el prefijo “eq:”.
Nota: las referencias a ecuaciones funcionan correctamente en salidas LaTeX/PDF, y trabaja parcialmente en salidas HTML en el sentido que no pueden hacerse referencias a ecuaciones en otras páginas. Actualmente esta característica no está disponible en salidas word o epub.
3.3 Figuras
Ver https://bookdown.org/yihui/bookdown/figures.html
Para incluir un gráfico en formato “jpg” o “png” puede usarse el comando en un chunk (ajustando los parámetros de la cabecera del chunk):
`` `{r figura01, fig.cap = 'Página oficial de R.', fig.align='center',out.width='80%'}
knitr::include_graphics("oficialR.png")
`` `
El resultado sería:
Para hacer referencia a una figura (se ha añadido la etiqueta a la cabecera del chunk “figura01”) podemos escribir: \@ref(fig:figura01)
y quedaría como ver la figura 3.3.
3.4 Tablas
Ver https://bookdown.org/yihui/bookdown/tables.html
knitr::kable(
head(mtcars[, 1:8], 10), booktabs = TRUE,
caption = 'A table of the first 10 rows of the mtcars data.'
)
mpg | cyl | disp | hp | drat | wt | qsec | vs | |
---|---|---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 |
Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 |
Datsun 710 | 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 |
Hornet Sportabout | 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 |
Valiant | 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 |
Duster 360 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 |
Merc 240D | 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 |
Merc 230 | 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 |
Merc 280 | 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 |
Una tabla muy grande:
knitr::kable(
iris[1:100, ], longtable = TRUE, booktabs = TRUE,
caption = 'A table generated by the longtable package.'
)
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa |
4.6 | 3.4 | 1.4 | 0.3 | setosa |
5.0 | 3.4 | 1.5 | 0.2 | setosa |
4.4 | 2.9 | 1.4 | 0.2 | setosa |
4.9 | 3.1 | 1.5 | 0.1 | setosa |
5.4 | 3.7 | 1.5 | 0.2 | setosa |
4.8 | 3.4 | 1.6 | 0.2 | setosa |
4.8 | 3.0 | 1.4 | 0.1 | setosa |
4.3 | 3.0 | 1.1 | 0.1 | setosa |
5.8 | 4.0 | 1.2 | 0.2 | setosa |
5.7 | 4.4 | 1.5 | 0.4 | setosa |
5.4 | 3.9 | 1.3 | 0.4 | setosa |
5.1 | 3.5 | 1.4 | 0.3 | setosa |
5.7 | 3.8 | 1.7 | 0.3 | setosa |
5.1 | 3.8 | 1.5 | 0.3 | setosa |
5.4 | 3.4 | 1.7 | 0.2 | setosa |
5.1 | 3.7 | 1.5 | 0.4 | setosa |
4.6 | 3.6 | 1.0 | 0.2 | setosa |
5.1 | 3.3 | 1.7 | 0.5 | setosa |
4.8 | 3.4 | 1.9 | 0.2 | setosa |
5.0 | 3.0 | 1.6 | 0.2 | setosa |
5.0 | 3.4 | 1.6 | 0.4 | setosa |
5.2 | 3.5 | 1.5 | 0.2 | setosa |
5.2 | 3.4 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.6 | 0.2 | setosa |
4.8 | 3.1 | 1.6 | 0.2 | setosa |
5.4 | 3.4 | 1.5 | 0.4 | setosa |
5.2 | 4.1 | 1.5 | 0.1 | setosa |
5.5 | 4.2 | 1.4 | 0.2 | setosa |
4.9 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.2 | 1.2 | 0.2 | setosa |
5.5 | 3.5 | 1.3 | 0.2 | setosa |
4.9 | 3.6 | 1.4 | 0.1 | setosa |
4.4 | 3.0 | 1.3 | 0.2 | setosa |
5.1 | 3.4 | 1.5 | 0.2 | setosa |
5.0 | 3.5 | 1.3 | 0.3 | setosa |
4.5 | 2.3 | 1.3 | 0.3 | setosa |
4.4 | 3.2 | 1.3 | 0.2 | setosa |
5.0 | 3.5 | 1.6 | 0.6 | setosa |
5.1 | 3.8 | 1.9 | 0.4 | setosa |
4.8 | 3.0 | 1.4 | 0.3 | setosa |
5.1 | 3.8 | 1.6 | 0.2 | setosa |
4.6 | 3.2 | 1.4 | 0.2 | setosa |
5.3 | 3.7 | 1.5 | 0.2 | setosa |
5.0 | 3.3 | 1.4 | 0.2 | setosa |
7.0 | 3.2 | 4.7 | 1.4 | versicolor |
6.4 | 3.2 | 4.5 | 1.5 | versicolor |
6.9 | 3.1 | 4.9 | 1.5 | versicolor |
5.5 | 2.3 | 4.0 | 1.3 | versicolor |
6.5 | 2.8 | 4.6 | 1.5 | versicolor |
5.7 | 2.8 | 4.5 | 1.3 | versicolor |
6.3 | 3.3 | 4.7 | 1.6 | versicolor |
4.9 | 2.4 | 3.3 | 1.0 | versicolor |
6.6 | 2.9 | 4.6 | 1.3 | versicolor |
5.2 | 2.7 | 3.9 | 1.4 | versicolor |
5.0 | 2.0 | 3.5 | 1.0 | versicolor |
5.9 | 3.0 | 4.2 | 1.5 | versicolor |
6.0 | 2.2 | 4.0 | 1.0 | versicolor |
6.1 | 2.9 | 4.7 | 1.4 | versicolor |
5.6 | 2.9 | 3.6 | 1.3 | versicolor |
6.7 | 3.1 | 4.4 | 1.4 | versicolor |
5.6 | 3.0 | 4.5 | 1.5 | versicolor |
5.8 | 2.7 | 4.1 | 1.0 | versicolor |
6.2 | 2.2 | 4.5 | 1.5 | versicolor |
5.6 | 2.5 | 3.9 | 1.1 | versicolor |
5.9 | 3.2 | 4.8 | 1.8 | versicolor |
6.1 | 2.8 | 4.0 | 1.3 | versicolor |
6.3 | 2.5 | 4.9 | 1.5 | versicolor |
6.1 | 2.8 | 4.7 | 1.2 | versicolor |
6.4 | 2.9 | 4.3 | 1.3 | versicolor |
6.6 | 3.0 | 4.4 | 1.4 | versicolor |
6.8 | 2.8 | 4.8 | 1.4 | versicolor |
6.7 | 3.0 | 5.0 | 1.7 | versicolor |
6.0 | 2.9 | 4.5 | 1.5 | versicolor |
5.7 | 2.6 | 3.5 | 1.0 | versicolor |
5.5 | 2.4 | 3.8 | 1.1 | versicolor |
5.5 | 2.4 | 3.7 | 1.0 | versicolor |
5.8 | 2.7 | 3.9 | 1.2 | versicolor |
6.0 | 2.7 | 5.1 | 1.6 | versicolor |
5.4 | 3.0 | 4.5 | 1.5 | versicolor |
6.0 | 3.4 | 4.5 | 1.6 | versicolor |
6.7 | 3.1 | 4.7 | 1.5 | versicolor |
6.3 | 2.3 | 4.4 | 1.3 | versicolor |
5.6 | 3.0 | 4.1 | 1.3 | versicolor |
5.5 | 2.5 | 4.0 | 1.3 | versicolor |
5.5 | 2.6 | 4.4 | 1.2 | versicolor |
6.1 | 3.0 | 4.6 | 1.4 | versicolor |
5.8 | 2.6 | 4.0 | 1.2 | versicolor |
5.0 | 2.3 | 3.3 | 1.0 | versicolor |
5.6 | 2.7 | 4.2 | 1.3 | versicolor |
5.7 | 3.0 | 4.2 | 1.2 | versicolor |
5.7 | 2.9 | 4.2 | 1.3 | versicolor |
6.2 | 2.9 | 4.3 | 1.3 | versicolor |
5.1 | 2.5 | 3.0 | 1.1 | versicolor |
5.7 | 2.8 | 4.1 | 1.3 | versicolor |
Para hacer referencia a la tabla primera (se ha añadido la etiqueta a la cabecera del chunk “tabla01”) podemos escribir: \@ref(tab:tabla01)
y quedaría como ver la tabla 3.1.
3.5 Referencias
Ver https://bookdown.org/yihui/bookdown/cross-references.html
Además de hacer referencias a ecuaciones, a figuras y a tablas, pueden hacerse referencias también a secciones usando la misma sintaxis \@ref{etiqueta}
, donde “etiqueta” es el identificador de la sección. Por defecto, se generan etiquetas para todas las secciones, por ejemplo, una sesión # Hola Mundo
tendrá una etiqueta “hola-mundo”. Se recomienda que manualmente se asigne una etiqueta. Para añadir manualmente una etiqueta para una sección, simplemente se añade al final de la cabecera {#etiqueta}
.
Cuando una etiqueta no puede encontrarse aparecerá “??”, además aparecerá un aviso en la consola de R al construir el libro.
También se pueden hacer referencias a secciones de una forma mucho más fácil (varias posibilidades):
Escribir el título de la cabecera entre corchetes.
[Fórmulas matemáticas en R Markdown con LaTeX]
produce: Fórmulas matemáticas en R Markdown con LaTeX
[LaTeX][Fórmulas matemáticas en R Markdown con LaTeX]
produce: LaTeX[LaTeX][#formulas]
produce: [LaTeX][#formulas]
3.6 Resaltar bloques de texto de un modo personalizado
3.7 Citas bibliográficas
Ver https://bookdown.org/yihui/bookdown/citations.html
Se recomienda usar ficheros BibTeX ya que es el mejor método para la salida LaTeX/PDF. Con BibTeX, será posible definir el estilo bibliográfico si se requiere para alguna revista en particular.
Un fichero BibTeX es un fichero de texto plano (con la extensión “.bib”) que consta de entradas bibliográficas como la siguiente:
@Manual{R-base,
title = {R: A Language and Environment for Statistical
Computing},
author = {{R Core Team}},
organization = {R Foundation for Statistical Computing},
address = {Vienna, Austria},
year = {2016},
url = {https://www.R-project.org/},
}
Una entrada bibliográfica comienza con @type{
, donde “type” puede ser: “article”, “book”, “manual”, etc. Luego sigue un identificador (clave) de la entrada bibliográfica, en el ejemplo anterior es: @R-base
. Para citar a esta entrda bibliográfica en el texto, usamos: @identificador
, o [@identificador]
(esta última pone la cita entre paréntesis). Por ejemplo, @R-base
produce la salida: R Core Team (2016), y [@R-base]
produce la salida: (R Core Team, 2016).
Nota: si estás familiarizado con el paquete natbib de LaTeX, @identificador
es básicamente \citet{identificador}
, y [@identificador]
es equivalente a \citep{identificador}
.
Existen diferentes campos en una entrada bibliográfica, tales como: “title”, “author”, “year”, etc. Puedes consultar la siguiente url https://en.wikipedia.org/wiki/BibTeX para ver todas los posibles campos en BibTeX.
Hay una función R en el paquete “knitr”: write_bib()
para generar entradas BibTeX automáticamente para paquetes R.
Por ejemplo:
knitr::write_bib(c("knitr","stringr"),file = "",width = 60)
## @Manual{R-knitr,
## title = {knitr: A General-Purpose Package for Dynamic Report
## Generation in R},
## author = {Yihui Xie},
## year = {2016},
## note = {R package version 1.14.4},
## url = {http://yihui.name/knitr/},
## }
## @Manual{R-stringr,
## title = {stringr: Simple, Consistent Wrappers for Common
## String Operations},
## author = {Hadley Wickham},
## year = {2016},
## note = {R package version 1.1.0},
## url = {https://CRAN.R-project.org/package=stringr},
## }
En la cabecera YAML del documento principal R Markdown, se usa el campo “bibliography” para incluir uno o más de un fichero “.bib”. También puede especificarse un estilo biliográfico con el campo “biblio-style” (esto solamente se aplica a la salida PDF), por ejemplo:
---
bibliography: ["principal.bib", "paquetes.bib", "otro.bib"]
biblio-style: "apalike"
link-citations: true
---
Ver estilos bibliográficos en: https://es.sharelatex.com/learn/Bibtex_bibliography_styles.
El campo “link-citations” puede usarse para añadir enlaces internos desde el texto de la citación “autor-año” a la entrada bibliográfica en la salida “HTML”.
Nota: en el siguiente enlace se explica cómo usar Google Scholar para descargar entradas de citas bibliográficas en estilo BibTeX:
3.8 Incluir páginas web, aplicaciones Shiny y Widgets
Ver https://bookdown.org/yihui/bookdown/html-widgets.html y https://bookdown.org/yihui/bookdown/web-pages-and-shiny-apps.html.
Para incluir una página web, puede usarse la función include_url()
del paquete “knitr”:
`` `{r out.width='85%',fig.align='center'}
knitr::include_url("http://destio.us.es/calvo")
`` `
produce la siguiente salida:
Para incluir código R que produzca salidas “HTML5-Javascript” debemos tener instalados el paquete R “webshot”, e instalar desde R el programa “PhantomJS”. Puede hacerse del siguiente modo desde la consola de R:
install.packages("webshot")
webshot::install_phantomjs()
Por ejemplo el siguiente código R:
`` `{r out.width='85%',fig.align='center'}
DT::datatable(iris)
`` `
produciría la siguiente salida (captura en PDF):
Referencias Bibliográficas
R Core Team. 2016. R: A language and environment for statistical computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.