Knitr: integrar código R en archivos de distintos formatos

Knitr

Knitr es un paquete nuevo de R que permite integrar código R en archivos de distintos formatos (ver tabla 1 y figura 1). Es más potente que los anteriores paquetes Sweave, pdfSweave o cacheSweave.
Ver la entrada anterior sobre knitr.

Format Source file ending Output R Code Chunk R expression
Rnw Rnw (.Rnw) Tex, pdf
<<R example>>=
x <- 1+1
rnorm(5)
@
\Sexpr{pi}
Github format markdown Markdown (.Rmd or .md) md, html
``` {r example}
x <- 1+1
rnorm(5)
```
`r pi`.
HTML Rhtml .html
<!--R example
 x <- 1+1
 rnorm(5)
 end.rcode-->
<!--rinline pi -->
 
reStructuredText .Rst .rst .. {R example}
.. x <- 1+1
.. rnorm(5)
.. ..
NOTE:include space after the ..
:r:`pi`

Tabla 1. Tipos de archivos que maneja knitr. Fuente: http://www.rstudio.com/shiny/




Aquí tienes una introducción al paquete knitr.

Knitr nos permite utilizar Markdown y R juntos! 

¿Que puede hacer markdown por mi?

  •  Quiero olvidarme del instrumento para pensar sólo en lo que estoy escribiendo
  •  Quiero escribir sin preocuparme del aspecto
  •  Quiero reutilizar lo que ya sé
  •  Quiero índices, bibliografía, …
  •  Quiero documentos ligeros
  •  Quiero escribir como me convenga, para el lector lo que necesite
  •  Quiero poder recortar y pegar a sin problemas
  •  Quiero trabajar con mis colegas

Proceso en investigación reproducible

  1. Elaboración del documento donde se auna la escritura del código y los textos necesarios. En markdonw y R la extensión del fichero es .Rmd
  2. Procesado del documento por la aplicación correspondiente a lenguaje de trabajo, en nuestro caso R. Creación de un documento en el formato deseado; en nuetro caso un documento .md
  3. Procesado, en su caso, del documento resultante, por ejemplo: elaboración de un documento .pdf.

Para un adecuado seguimiento del trabajo, al final o el inicio, conviene añadir:

print(sessionInfo(), locale = FALSE)

Tipos de archivos que podemos generar

En un post anterior, he colgado un video sobre cómo usar knitr, mediante archivos Rnw y Rmd.

Rnw

Descargar el archivo exampleSweave.rnw.
  • Para construir un archivo tex.
Sweave(file="exampleSweave.Rnw")
  • Para convertir el archivo tex a un pdf.
tools::texi2dvi(file="exampleSweave.tex", pdf=TRUE)

  • Para extraer el código R de los trozos o módulos ("chunks").
Stangle(file="exampleSweave.Rnw")
  • Para producir un archivo html.
Sweave("filename.rnw", driver=RweaveHTML)


    library(knitr)
    knit('knitr-minimal.Rnw')

También podemos utilizar el programa pandoc (conversor universal) para convertir el archivo Rnw a otros formatos:

# system("pandoc -s exampleSweave.Rnw -o exampleSweave.pdf") 
# system("pandoc -s exampleSweave.Rnw -o exampleSweave.docx")
# system("pandoc -s exampleSweave.Rnw -o exampleSweave.html")




Rmd


# Create mark down (.md) file 
knit("example.Rmd")
knit2html("example.Rmd")
knit2pdf("example.Rmd")

 manipular
require(knitr)
# Produce the markdown (.md) file
knit("example.Rmd")

# help on the output and input formats accepted which include json, html, html5, odt, docx and epub and slide formats slidy, beamer, dzslides etc
system("pandoc -h")
# pdf file
pandoc("example.md", format="latex")
# html file
pandoc("example.md", format="html5+lhs")
# OpenOffice File
pandoc("example.md", format="odt")
# Microsoft Word
pandoc("example.md", format="docx")

Podemos ver el archivo Rmd de entrada slides.Rmd y el archivo html de salida slides.html.

También podemos utilizar pandoc de la siguiente manera.

knit("slides.Rmd")
 system("pandoc -s -S -i -t dzslides --mathjax slides.md -o slides.html")



Programas relacionados con knitr

Slidify: resultados html5

Un paquete relacionado con knitr es Slidify (http://ramnathv.github.io/slidify/), que permite realizar presentaciones html5 a partir de nuestros archivos Markdown.
Ayuda a crear, personalizar y compartir documentos elegantes, dinámicos e interactivos a través de HTML5 - R - Markdown.






 

Información extra que puedes necesitar.

  • Cómo instalar Lyx-LATEX



  • Diferencias entre Sweave y Knitr


  • Instalación de Pandoc

Los usuarios de Windows están de suerte. Instalar Pandoc en Windows ahora es muy fácil. Se puede hacer desde R con el paquete installr. Una vez instalado este paquete en R, ejecutaremos la instrucción

library(installr)
install.pandoc()


  • Utilizar pander: el paquete Pandoc en R


Comentarios