Diferencia: botón "Compilar PDF" en RStudio vs. knit () y knit2pdf ()

TL; DR

¿Cuáles son los efectos secundarios (posiblemente no deseados) del usoknit()/knit2pdf()$2¿Cuáles son los efectos secundarios (posiblemente no deseados) del uso3$

Motivación

La mayoría de los usuarios deknitr parece escribir sus documentos en RStudio y compilarlos usando el botón "Compilar PDF" / "Knit HTML". Esto funciona sin problemas la mayor parte del tiempo, pero de vez en cuando hay requisitos especiales que no se pueden lograr con el botón de compilación. En estos casos, la solución suele ser llamarknit()/knit2pdf()/rmarkdown::render() (o funciones similares) directamente.

Algunos ejemplos:

¿Cómo tejer / Sweave a un nombre de archivo diferente?¿Hay alguna manera de hacer un punto de rebaja directamente de su espacio de trabajo usando RStudio?Inserte la fecha en el nombre del archivo al tejer el documento con el botón RStudio Knit

Utilizandoknit2pdf() en lugar del botón "Compilar PDF", generalmente ofrece una solución simple para tales preguntas. Sin embargo, esto tiene un precio: existe la diferencia fundamental de que "Compilar PDF" procesa el documentoen un proceso y entorno separados mientrasknit2pdf() y amigos no.

Esto tiene implicaciones y el problema es que no todas estas implicaciones son obvias. Toma el hecho de queknit() utiliza objetos del entorno global (mientras que "Compilar PDF" no) como ejemplo. Esto puede ser obvio y el comportamiento deseado en casos como el segundo ejemplo anterior, pero es unconsecuencia inesperada cuandoknit() se usa para superar problemas como en los ejemplos 1 y 3.

Además, hay diferencias más sutiles:

losdirectorio de trabajo podría no establecerse como se esperaba.Los paquetes necesitan ser cargados.Algunas opciones que usualmente establece RStudio pueden tenervalores inesperados.La pregunta y su objetivo

Cada vez que leo / escribo los consejos para usarknit2pdf() en lugar de "Compilar PDF", creo"Correcto, pero el usuario debe entender las consecuencias ...".

Por lo tanto, la pregunta aquí es:

¿Cuáles son los efectos secundarios (posiblemente no deseados) del usoknit()/knit2pdf() en lugar del botón "Compilar PDF" en RStudio?

Si hubiera una respuesta integral (¿wiki de la comunidad?) A esta pregunta, se podría vincular en futuras respuestas que sugieran usarknit2pdf().

preguntas relacionadas

Hay docenas de preguntas relacionadas con esta. Sin embargo, proponen solo código para (más o menos) reproducir el comportamiento del botón RStudio o explican qué sucede "básicamente" sin mencionar las posibles dificultades. Otros parecen ser preguntas muy similares, pero resultan ser un caso (muy) especial. Algunos ejemplos:

Knit2html no replica la funcionalidad del botón Knit HTML en R Studio: Problema de almacenamiento en caché.Las salidas HTML son diferentes entre usar knitr en Rstudio y knit2html en la línea de comando: Versiones de Markdown.¿Cómo convertir R Markdown a HTML? Es decir, ¿qué hace "Knit HTML" en Rstudio 0.96?: Respuesta bastante superficial de Yihui (explica qué sucede "básicamente") y algunas opciones sobre cómo reproducir el comportamiento del botón RStudio. Ni elsugirió Sys.sleep(30) niel registro "Compilar PDF" son perspicaces (ambas pistas apuntan a lo mismo).¿Qué hace "Knit HTML" en Rstudio 0.98?: Reproduce el comportamiento del botón.Sobre la respuesta

Creo que esta pregunta planteó muchos de los problemas que deberían ser parte de una respuesta. Sin embargo, puede haber muchos más aspectos que no conozco, y esta es la razón por la que soy reacio a responder esta pregunta (aunque podría intentarlo si nadie responde).

Probablemente, una respuesta debería cubrir tres puntos principales:

El nuevo problema de sesión versus sesión actual (opciones globales, directorio de trabajo, paquetes cargados, ...).Una consecuencia del primer punto: el hecho de queknit() usa objetos del entorno de llamada (predeterminado:envir = parent.frame()) e implicaciones para la reproducibilidad. Traté de abordar el problema de prevenirknit() de usar objetos desde fuera del documento enesta respuesta (segunda viñeta).Cosas que RStudio hace en secreto ...... al comenzar una sesión interactiva (ejemplo) -> No disponible al presionar "Compilar PDF"… Al presionar "Compilar PDF" (¿hay algo especial además de la nueva sesión con el directorio de trabajo configurado en el archivo procesado?)

No estoy seguro de la perspectiva correcta sobre el tema. Creo que tanto "lo que sucede cuando presiono 'Compilar PDF' + implicaciones" como "lo que sucede cuando usoknit() + implicaciones "es un buen enfoque para abordar la cuestión.

1 Lo mismo se aplica al botón "Knit HTML" al escribir documentos RMD.

Respuestas a la pregunta(1)

Su respuesta a la pregunta