Cómo convertir R Markdown a HTML? Es decir, ¿Qué hace "Knit HTML" en Rstudio 0.96?


¿Qué comandos se ejecutan al presionar "Knit HTML" en un archivo R Markdown en Rstudio 0.96?

Mi motivación es que podría querer ejecutar el mismo comando cuando estoy en otro entorno de edición de texto o podría querer combinar el comando en un makefile más grande.

Author: StasK, 2012-05-18

4 answers

Pon Sys.sleep(30) en un trozo y verás claramente qué comandos son llamados por RStudio. Básicamente son

  1. library(knitr); knit() para obtener el archivo markdown;
  2. RStudio tiene funciones internas para convertir markdown a HTML;

El segundo paso será más transparente en la próxima versión del markdown paquete. Actualmente puedes usar knitr::knit2html('your_file.Rmd') para obtener un archivo HTML similar al que te da RStudio.

 39
Author: Yihui Xie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-18 14:16:07

Script básico

Así que ahora que el paquete R markdown ha sido liberado, aquí hay un código para replicar las características de Knit a Html.

require(knitr) # required for knitting from rmd to md
require(markdown) # required for md to html 
knit('test.rmd', 'test.md') # creates md file
markdownToHTML('test.md', 'test.html') # creates html file
browseURL(paste('file://', file.path(getwd(),'test.html'), sep='')) # open file in browser 

Donde test.rmd es el nombre de su archivo R markdown. Tenga en cuenta que no estoy 100% seguro de la línea browseURL (de ahí mi pregunta aquí sobre abrir archivos en un navegador web).

Opciones de MarkdownToHTML

Lo bueno de markdownToHTML es que hay un montón de opciones en cómo se crea el HTML (véase ?markdownHTMLOptions). Por ejemplo, si desea un fragmento de código sin toda la información del encabezado, puede escribir:

markdownToHTML('test.md', 'test.html', options='fragment_only')

O si no le gusta la envoltura dura (es decir, insertar saltos de línea cuando hay saltos de línea manuales individuales en la fuente de markdown), puede omitir la opción 'hard_wrap'.

# The default options are 'hard_wrap', 'use_xhtml', 
#      'smartypants', and 'base64_images'.
markdownToHTML('test.md', 'test.html', 
       options=c('use_xhtml', 'base64_images'))

Makefile

Esto también podría agregarse a un makefile quizás usando Rscript -e (por ejemplo, algo como esto). Aquí hay un ejemplo básico de makefile que armé, donde test indica que el archivo rmd se llama test.rmd.

RMDFILE=test

html :
    Rscript -e "require(knitr); require(markdown); knit('$(RMDFILE).rmd', '$(RMDFILE).md'); markdownToHTML('$(RMDFILE).md', '$(RMDFILE).html', options=c('use_xhtml', 'base64_images')); browseURL(paste('file://', file.path(getwd(),'$(RMDFILE).html'), sep=''))"

El makefile usa mis opciones de markdown preferidas: i. e., options=c('use_xhtml', 'base64_images')

 62
Author: Jeromy Anglim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:07

Método de línea de comandos muy fácil desde knitr en un knutshell :

R -e "rmarkdown::render('knitr_example.Rmd')"

Esto requiere que rmarkdown se instale con install.packages(rmarkdown) y que pandoc esté instalado (aparentemente viene con Rstudio, vea knitr en un knutshell para más detalles).

Hasta ahora, cuando he usado esto, coloca muy bien todas las gráficas en el archivo HTML en lugar de como imágenes en un directorio de figuras y limpia cualquier archivo intermedio, si lo hay; al igual que lo hace la compilación en RStudio.

 26
Author: Harry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-26 00:36:05

Parece que deberías llamar a rmarkdown::render() en lugar de knitr::knit2html() porque un.rmd parece ser un documento R Markdown v2.

 1
Author: Shicheng Guo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-06 23:26:05