###########################################################
##                 NO BORRAR ESTA SECCIÓN                ##
###########################################################
library(tufte)
library(knitr)
opts_knit$set(root.dir = normalizePath("../../"))
options(
  width                 = 80,
  htmltools.dir.version = FALSE
)
opts_chunk$set(tidy        = F,
               prompt      = F,
               cache.extra = packageVersion('tufte'),
               dev         = "png",
               dpi         = 600,
               fig.path    = "figuras/fig_",
               cache.path  = "cache/chunk_",
               cache       = T,
               par         = T,
               comment     = "#",
               warning     = F,
               message     = F)
source("../../configuracion/config.R")
###########################################################
##              DESDE AQUÍ YA PUEDES BORRAR              ##
###########################################################

Sobre esta plantilla

La elaboración de esta plantilla se asocia al paquete de R fisabior, en el que puedes participar abiertamente como desarrollador de cara a mejorar el producto final. Este paquete empieza con el propósito de homogeneizar la elaboración de proyectos estadísticos en la fundación, así como el facilitar una estructura organizativa común que facilite tanto la búsqueda de información dentro de un proyecto, como la colaboración de otros estadísticos de FISABIO en un proyecto abierto.

Fruto de esta idea inicial, una de las primeras sugerencias que se recibieron y aceptaron fue la de crear una plantilla uniforme que sirviera de base para la elaboración de informes estadísticos, y como suele decirse de aquellos polvos estos lodos. Esta plantilla está pensada para ser trabajada directamente a través de R empleando knitr y rmarkdown.

Pongámonos en situación: has realizado un análisis estadístico sobre un banco de datos y estás preparando el informe de resultados. Te pasas varias horas (o días) copiando y pegando tablas y gráficos o, mucho peor, sufriendo la alienación que supone escribir todos los valores a mano. Tras ello, le llega el turno a la maquetación para que todo sea bonito y el informe solo necesite un lacito para ser enviado a quien corresponda, y esto también requiere un gran esfuerzo.

Sin embargo, es habitual que a alguien se le ocurra algo que pueda mejorar el análisis y el producto final, aunque pensar en pasar una vez más por todo el proceso de copia-pega por un cambio mínimo, puede amargarte después de tanta dedicación. Y lo peor es que todo empieza con buenas intenciones y algo parecido a: y si... recodificamos esta variable, y si... en tal modelo probamos a introducir un factor aleatorio y vemos cómo quedan los residuos o, en el peor de los casos, si... repetimos este análisis pero haciendo el pino mientras tocamos tocamos la sintonía de Juego de Tronos con el ukelele.

¿Alguna vez te ha pasado? Pues es precisamente ahí donde los informes dinámicos pueden sacarnos del apuro. La idea es muy simple: integrar trozos de código ligados a un análisis y las salidas que R produce al ejecutarlos (tanto texto como gráficos) dentro del informe que se esté preparando, de una manera natural y bastante fácil. ¿Tras la revisión de los compañeros se plantean cambios en el análisis? No pasa nada: modificando el código integrado el informe, este se genera de nuevo automáticamente con el código y las salidas actualizadas. Esto, que en principio parece poco relevante, implica que solo has de concentrarte en tu investigación: pensar en la mejor forma de análisis y en la interpretación de los resultados.

Acerca de Markdown

Este documento ofrece una base sobre la que trabajar a la hora de redactar informes empleando una sintaxis Markdown y código en R gracias al paquete knitr.

A estas alturas seguro que conoces los entresijos de R, pero es probable que aún no le hayas tomado la medida a Markdown: se trata de un lenguaje muy sencillo que permite escribir textos de una manera fácil y dinámica (de hecho, es tan sencillo que en primera instancia solo deberías conocer un par de aspectos para poder comenzar a trabajar).

Itálica y negrita

*Esto es itálica* y esto _también_: Esto es itálica y esto también. **Esto es negrita** y esto __también__: Esto es negrita y esto también También puedes usar ***itálica y negrita*** si lo ___deseas___: También puedes usar itálica y negrita si lo deseas

Vínculos

Aquí tienes un hipervínculo a [Google](http://www.google.com/): Aquí tienes un hipervínculo a Google.

Encabezados

Se crean empleando el caracter #, siendo su número el que indica el nivel del encabezado. Por ejemplo, para crear un encabezado de nivel 3 se usaría ### Título del encabezado, y el resultado sería:

Encabezado de nivel 3

Listas

Puedes crear listas muy sencillas, numeradas o no, empleando los caracteres -, +, *; o una secuenia de números seguidos por un punto, como 1., 2. o 3.. Por ejemplo, para crear una lista no numerada, se emplea el código:

- primer elemento, primer nivel,
- segundo elemento, primer nivel,
  * primer elemento, segundo nivel,
- tercer elemento, primer nivel.

lo cual produce el siguiente resultado:

Citas textuales

Para crear citas se usa el símbolo > al comienzo de cada línea que compone la cita. Por ejemplo, la instrucción > Esto es una cita muy importante. genera el siguiente resultado:

Esto es una cita muy importante.

r tufte::quote_footer('--- Jacinto el de mi pueblo')

Acerca de knitr

Para insertar elementos de código y decorarlos para que tengan vistosidad, se usará el paquete knitr junto con Markdown. Con knitr, en primer lugar hay que identificar los trozos de código, y para ello escribimos ```r, indicando que comienza la sección de código qu deseamos introducir y que el lenguaje de programación empleado es R, y ``` para indicar el final de la pieza de código. En la web del autor de knitr podrás encontrar un montón de ejemplos y de opciones útiles para obtener la salida deseada: p. ej., imagina que deseas mostrar únicamente un resultado y omitir el código, pues la solución es añadir echo = F en el encabezado (```r); o que deseas que la figura que se produzca con un plot(x) tenga un tamaño de 10cm x 5cm, pues ```r. Como ves, la sintaxis es muy sencilla y bastante intuitiva.

Figuras

Las opciones para representar figuras son variadas:

source("configuracion/config.R")
library(sp)
library(RColorBrewer)
data("aragon_iam")
opar <- par(mar = c(1, 1, 1, 1))
paleta <- brewer.pal(6, "OrRd")
paleta_col <- paleta[findInterval(with(aragon_iam@data, observada / esperada),
                                  c(0, 0.1, 0.5, 1, 1.5, 2, 10))]
plot(aragon_iam, col = paleta_col)
legend("topleft", c("<0.1", "0.1-0.5", "0.5-1", "1-1.5", "1.5-2", ">=2"),
       title = "RME", fill = paleta, bty = "n")
par(opar)
library(ggplot2)
ggplot(aragon_iam@data, aes(x = observada, y = esperada, color = area)) +
  geom_point() +
  xlim(0, 75) + 
  ylim(0, 75) + 
  geom_smooth(method = "lm", se = F)

Tablas

También podemos crear tablas fácilmente gracias a la función knitr::kable().

kable(head(aragon_iam@data), digits = 2, align = rep("c", 7), caption = "Esto es la leyenda de la Tabla.")

Añadir imágenes existentes

Para cargar imágenes que no procedan del código incrustado en el propio documento lo mejor es utilizar la función knitr::include_graphics("ruta/a/la/imagen") en un chunk de código estándar:

knitr::include_graphics(path = "figuras/fisabior.png", dpi = 200)

Arbitrary Margin Content

In fact, you can include anything in the margin using the knitr engine named marginfigure. Unlike R code chunks ```r, you write a chunk starting with ```{marginfigure} instead, then put the content in the chunk. See an example on the right about the first fundamental theorem of calculus.

We know from _the first fundamental theorem of calculus_ that for $x$ in $[a, b]$:
$$\frac{d}{dx}\left( \int_{a}^{x} f(u)\,du\right)=f(x).$$


carlosvergara/fisabioR documentation built on May 13, 2019, 12:49 p.m.