ReporterÃa Dinámica.
Abril, 2018
ReporterÃa Dinámica.
Knitr vincula la presentación de resultados con la creación de los mismis. knitr toma tres pasos, primero nosotros creamos un documento de marcado de knittable. Contiene tanto el código de análisis como el marcado del documento de presentación: el texto y las reglas sobre cómo formatear el texto. knitr luego teje: es decir, ejecuta el código de análisis y convierte el resultado en el lenguaje de marcado que está utilizando de acuerdo con las reglas que indica que debe usar. Inserta los resultados marcados en un documento que solo contiene marcas para el documento de presentación.
Usted compila este documento de marcado como lo harÃa si no hubiera usado knitr en su documento PDF final o página web presentando tus resultados.
El paquete rmarkdown implementa una variación en este proceso que utiliza una programa llamado Pandoc para crear documentos de presentación en múltiples formatos de un documento que se puede tejer y escribir en Markdown. La principal diferencia entre el knitr markdown y los documentos de downmark es la inclusión de un encabezado que especifica cómo quiere renderizar el documento con Pandoc.
El encabezado está escrito en YAML. 31 El encabezado YAML puede incluir información como el tÃtulo del documento, el autor, si incluye o no una tabla de contenido y un enlace a un archivo de bibliografÃa BibTeX. YAML es un formato de datos sencillo que organiza la información en una jerarquÃa simple.
RStudio puede crear automáticamente un encabezado básico para el tipo de documento de salida que desea cuando abre un nuevo archivo de referencia. Simplemente seleccione File → New File → R Markdown. Además del encabezado, rmarkdown difiere de knitr en que puede incluir la sintaxis de Pandoc en su documento de R Markdown. Esto puede ser útil para bibliografÃas.
--- title: "A Basic PDF Presentation Document" author: "Christopher Gandrud" date: "30 November 2015" output: pdf_document: toc: true ---
Cuando guarde un archivo de punto, use una extensión de archivo que indique (a) que se puede tejer y (b) qué lenguaje de marcado está usando. Puede usar varias extensiones de archivo para archivos R Markdown, incluidos: .Rmd y .Rmarkdown.
Los documentos LaTeX que incluyen trozos de código knitr generalmente se llaman archivos R Sweave y tienen la extensión de archivo .Rnw. Esta terminologÃa es un poco confusa. Es un vestigio del principal predecesor de programación alfabetizado de knitr llamdo Sweave.
Cuando desee incluir el código R en sus documentos de presentación de marcado, hay que colocarlos en un fragmento de código "Chunk". La sintaxis del fragmento de código difiere dependiendo del lenguaje de marcado (LateX o html) que estamos utilizando para escribir nuestros documentos. Veamos la sintaxis de los archivos R Markdown y R LaTeX.
En los archivos R Markdown, comenzamos un fragmento de código escribiendo el encabezado '''{r} y se cierra el fragmento con '''
Los trozos de código en estilo Sweave tradicional comienzan con la siguiente cabecera << >>= y terminan con @, por ejemplo:
Cada pedazo tiene una etiqueta. Cuando un fragmento de código crea un gráfico o el resultado se almacena en caché para uso futuro, knitr utiliza la etiqueta de fragmento para el nombre del nuevo archivo. Si no asigna explÃcitamente al fragmento una etiqueta, se le asignará uno como: unnamed-chunk-1.
Para asignar explÃcitamente etiquetas de fragmentos en documentos de R Markdown, coloque el nombre de la etiqueta dentro de las llaves después de la r. Si quisiéramos usar la etiqueta ChunkLabel, tecleamos:
El mismo formato general se aplica a los dos tipos de fragmentos LaTeX. En Sweave en cambio para añadir una etiqueta al Chunk escribimos: <<ChunkLabel>>=
Hay muchas ocasiones en las que queremos cambiar la manera en que se tejen y presentan nuestros fragmentos de código. Tal vez solo queremos mostrar el código y no los resultados, o tal vez no queremos mostrar el código en absoluto, solo la cifra que produce. Tal vez queremos que la figura se formatee en una página de cierta manera. Para hacer estos cambios y muchos otros, podemos especificar opciones de fragmentos de código.
Los operadores lógicos TRUE y FALSE no pueden escribirse 'true' y 'false'. Por ejemplo, imagina que tenemos un fragmento de código Markdown llamado ChunkLabel. Si queremos ejecutar el fragmento de código knitr, pero no mostrar el código en el documento de presentación final, podemos usar la opción echo = FALSE.
Tenga en cuenta que todas las etiquetas y las opciones de fragmentos de código deben estar en la misma lÃnea. Las opciones están separadas por comas. La sintaxis para las opciones knitr es la misma independientemente del lenguaje de marcado.
Hasta ahora solo hemos analizado cómo configurar las opciones locales en fragmentos de código knitr, es decir, opciones para un solo fragmento especÃfico. Si queremos que una opción se aplique a todos los fragmentos de nuestro documento, podemos establecer opciones globales de fragmentos. Las opciones son 'globales' en el sentido de que se aplican a todo el documento. Establecer opciones globales de fragmentos nos ayuda a crear documentos formateados de manera consistente sin tener que especificar repetitivamente la misma opción cada vez que creamos un nuevo fragmento de código.
Para establecer una opción global, primero crea un nuevo fragmento de código al principio de tu documento.
Nota: si desea usar opts_chunk en un documento presentado con rmarkdown Necesitará cargar knitr en un fragmento de código que precede a la llamada.
knitrLas opciones del paquete knitr afectan la forma en que se ejecuta el paquete. Por ejemplo, la opción de progreso se puede establecer como TRUE o FALSE según si desea o no que se muestre una barra de progreso cuando se teje un fragmento de código. Puede usar base.dir para establecer el directorio en el que desea que se guarden todas sus figuras, o la opción child.path para especificar dónde se encuentran los documentos secundarios.
Establece las opciones del paquete de forma similar a las opciones globales de fragmentos con opts_knit$set. Por ejemplo, incluya este código al principio de un documento para desactivar la barra de progreso cuando se teje:
Como knitr es un paquete R regular, puede, por supuesto, tejer documentos en R (o usar la consola en RStudio). Toda la sintaxis knitr en su documento de marcado es la misma que antes, pero en lugar de hacer clic en un botón Compile PDF o knit HTML, utilice la función de punto. Para tejer un hipotético archivo Markdown Example.Rmd primero usa el comando setwd para establecer el directorio de trabajo a la carpeta donde está ubicado el archivo Example.Rmd.
Utilice los mismos pasos para todos los demás tipos de documentos 'knitables'. Tenga en cuenta que si no especifica el archivo de salida, knitr determinará cuál debe ser el nombre y la extensión del archivo. En este ejemplo, aparecerÃa con el mismo nombre y ubicación que le dimos.
#Pasar de .Rmd a .md knit(input = "Example.Rmd", output = "Example.md") # Pasar de .md a .html mardownToHTML(file = "Example.md", output = "Example.html") #Pasar de .Rmd a .html knit2html(file = "Example.Rmd", output = "Example.html")
Si queremos compilar un archivo .tex en R lo ejecutamos a través de la función texi2pdf en el paquete de herramientas. Este paquete ejecutará tanto LaTeX como BibTeX para crear un PDF con una bibliografÃa.
library(tools) # Compile pdf texi2pdf(file = "Example.tex")
Asà como knitr es un paquete R que se puede ejecutar desde la consola, también se puede ejecutar rmarkdown desde la consola. En lugar de la función de knitr, utiliza render. Imagine que Example.Rmd ahora tiene un encabezado rmarkdown:
--- title: "A Basic PDF Presentation Document" author: "Christopher Gandrud" date: "30 November 2015" output: pdf_document: toc: true html_document: toc: false ---
Este encabezado especifica cómo se puede compilar el archivo en PDF o HTML. Cuando se compila en PDF, incluirá una tabla de contenido. Cuando se compila para HTML no lo hará. Ahora usamos render:
render("Example.Rmd")
Esta llamada compilará el documento en un PDF en el directorio de trabajo, porque el PDF aparece como el primer formato de salida en el encabezado. El documento se llamará Example.pdf. Alternativamente, para compilar el archivo R Markdown para uso de HTML:
render("Example.Rmd", "html_document")
#Compilar en ambos
render("Example.Rmd", "all")
render("Example.Rmd", c("pdf_document", "html_document"))
En todos estos casos, el procesamiento no conservará el documento intermedio .md o .tex. Puede guardar estos documentos agregando keep_md o keep_tex al encabezado. Por ejemplo:
--- output: pdf_document: keep_tex: true html_document: keep_md: true ---
Por último, si desea dar salida a un formato con el estilo de representación predeterminado use html_document: default
La Figura siguiente proporciona un ejemplo de cómo se podrÃan organizar los archivos en un proyecto de investigación reproducible simple. El directorio principal del proyecto se llama ExampleProject. Junto a este directorio se encuentran los documentos principales de punto (Paper.Rnw, Slideshow.Rnw y Website.Rmd). Además, hay un subdirectorio de Análisis con los archivos R para ejecutar los análisis estadÃsticos seguidos de otro directorio secundario de Datos.
La estructura de archivos anidados le permite utilizar rutas de archivos relativas. Los documentos modulares pueden llamar a Analysis1.R con la ruta relativa Analysis/Analysis1.R, que a su vez podrÃa llamar a un archivo en el subdirectorio Data/. Si todos los directorios estuvieran en el mismo nivel del árbol de archivos, entonces necesitarÃa usar rutas absolutas de archivos.
Además de los principales archivos y subdirectorios en ExampleProject, probablemente verá un archivo llamado README.md. El archivo README.md del menú del proyecto RStudio ofrece una descripción general de todos los archivos del proyecto. Debe describir brevemente el proyecto incluyendo cosas como su tÃtulo, autor(es), tema, cualquier información de copyright, etc. También debe indicar cómo están organizadas las carpetas del proyecto y dar instrucciones sobre cómo reproducir el proyecto. Además es útil incluir información del sistema de la sesión de R.
toLatex(sessionInfo())
#Informacion de archivos y directorios
getwd()
list.files()
setwd("/ExampleProject/Data/GatherSource")
#Ruta de knitr
opts_knit$set(root.dir = '/ExampleProject/Analysis')
#Creacion de Archivos y Directorios
dir.create("C:\\ExampleProject")
file.create("C:\\ExampleProject\\SourceCode.R")
source('SourceCode.R') #Compilar archivo
#Añadir texto
cat("Reproducible Research with R and RStudio",
file = "ExampleCat.md")
#Eliminar archivos y directorios
unlink("C:\\ExampleProject\\SourceCode.R")
#Mover y Copiar archivos
file.rename(from = "C:\\ExampleProject\\ExampleCat.md",
to = "C:\\MarkdownFiles\\ExampleCat.md")
file.copy(from = "C:\\ExampleProject\\ExampleCat.md",
to = "C:\\MarkdownFiles\\ExampleCat.md")
Si un usuario solo tiene conocimiento básico de R pero no sabe nada sobre knitr, o si no desea escribir nada más que un script R, también es posible generar un informe rápido de este script R utilizando la función de stitch(). La idea básica de stitch() es que knitr proporciona una plantilla del documento fuente con algunas configuraciones predeterminadas, de modo que el usuario solo necesita alimentar esta plantilla con un script R.
library(knitr)
stitch("script.R")
Luego knitr compilará la plantilla en un informe. Actualmente tiene plantillas incorporadas para LateX, Html y Markdown.
Para un documento de programación, podemos compilarlo en un informe (ejecutar el código), o extraer el código del programa que se encuentra en él. A esto se le conoce como "weaving" (tejer) y "tangling" (enredar), respectivamente. Aparentemente la función knit() es para tejer, y la función de "tangling" correspondiente es purl() en knitr. Por ejemplo,
library(knitr)
purl("minimal.Rnw")
purl("minimal.Rmd")
El resultado del enredo es una secuencia de comandos R; en los ejemplos anteriores, la salida predeterminada será minimal.R, que consta de todos los fragmentos de código en el documento de origen (Chunks).