Rmarkdown que dirige el archivo de salida a un directorio

Encontré un buen truco (enlazar) a una función de knitr, donde puede guardar su salida html en una carpeta de salida y con un nombre de archivo diferente.

Lo único que debe dirigirse al encabezado es lo siguiente:

title: "analysis"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) { 
      rmarkdown::render(inputFile,
                        encoding=encoding, 
                        output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
  html_document:
    number_sections: yes
    toc: yes

Esto funciona en mi Mac 'a veces' muy bien, pero a veces tiene problemas para encontrar la variable out_dir ...

Primero pensé en ejecutar los fragmentos primero, así que la variable está configurada ... Pero esto no resolvió el problema ...

También reinicié la sesión de R y esto no ayudó.

El último paso fue cerrar R, guardar el espacio de trabajo y después de volver a abrir R y cargar el espacio de trabajo, vuelve a funcionar como un encanto.

No pude encontrar la publicación original, donde alguien recomendó este truco ...

FLUJO DE TRABAJO EXACTO PARA REPRODUCIR

abrir un nuevo proyecto, nombrarlo probar en una nueva carpeta
crear un documento de rebaja r
cambiar el encabezado a:

---
title: "Untitled"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) { 
      rmarkdown::render(inputFile,
                        encoding=encoding, 
                        output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
  html_document:
    number_sections: yes
    toc: yes
---

```{r write quant output files}
out_dir <- 'test'
if(!file.exists(out_dir)) {
  dir.create(out_dir)
}
```

guarde el documento como prueba.Rmd
haga clic en el botón de punto (html ahora se elimina de las opciones del botón)
¡Esto fallará!

¡Cierra el proyecto!
Haga clic en guardar entorno!

¡Abre el proyecto y haz clic en tejer!
Todo funciona.

ejecutar rm (list = ls ()) todo vuelve a funcionar después

Respuestas a la pregunta(1)

Su respuesta a la pregunta