tutorial the texto sheet rmarkdown mac guide for examples definitive cheat centrar r knitr rstudio r-markdown

the - knitr: ejecuta todos los trozos en un documento Rmarkdown



r markdown tutorial pdf (3)

Tengo un documento .Rmd cuyo proceso de Knitr está bien.

Me gustaría ejecutar todos los fragmentos del documento para poder explorar los resultados en mi shell R

En Rstudio hay una opción para ejecutar todos los fragmentos en el documento, pero no puedo encontrar la manera de lograr el mismo efecto en una sesión R simple (abierta en mi terminal).

¿Hay alguna forma de hacer esto?


Ni siquiera tiene que usar purl() : si knit el documento en la consola R, el código se evalúa en el entorno global (de manera predeterminada, vea la opción envir= para knit() ).

Entonces, si su archivo es my.Rmd , simplemente ejecute

library(knitr) knit(''my.Rmd'')

Un truco útil: si solo desea ejecutar un determinado punto del documento, inserte un error como:

stop(''here'')

en el punto de un fragmento de código que desea que se detenga, y configure la siguiente opción knitr :

opts_chunk $ set (error = FALSE)

en la consola antes de ejecutar knit() .


cargar los archivos en variable de texto en bruto

file_name="your_file_name.Rmd" txt <- readLines(file_name)

identificar el inicio y el final del fragmento (la primera columna será la línea en la que comienzan los fragmentos para cada fragmento y la segunda columna será donde termina el fragmento)

chunks <- matrix(grep("```",txt),ncol = 2,byrow = T)

seleccione todas las líneas entre el inicio y el final, que son el código real como cadena

temp <- apply(chunks,1,function(x) txt[(x[1]+1):(x[2]-1)])

ejecuta el código (esta línea ejecuta todo el código codificado en una variable de cadena)

eval(parse(text = temp))


Usar Run all chunks es equivalente a:

  • Crear un archivo R temporal
  • Use knitr::purl para extraer todos los trozos R en el archivo temporal
  • Usa source() para ejecutar el archivo
  • Eliminar el archivo temporal

Me gusta esto:

tempR <- tempfile(fileext = ".R") library(knitr) purl("SO-tag-package-dependencies.Rmd", output=tempR) source(tempR) unlink(tempR)

Pero querrás convertir esto en una función. Esto es bastante sencillo, excepto que tiene que usar sys.source para ejecutar el script R en el entorno global:

runAllChunks <- function(rmd, envir=globalenv()){ tempR <- tempfile(tmpdir = ".", fileext = ".R") on.exit(unlink(tempR)) knitr::purl(rmd, output=tempR) sys.source(tempR, envir=envir) } runAllChunks("SO-tag-package-dependencies.Rmd")