Rmarkdown direcionando o arquivo de saída para um diretório

Encontrei um truque muito bom (ligação) para uma função do knitr, onde você pode salvar o html de saída em uma pasta de saída e com um nome de arquivo diferente.

A única coisa que você precisa fazer para ir para o cabeçalho é o seguinte:

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

Isso funciona no meu Mac 'às vezes' muito bem, mas às vezes tem problemas para encontrar a variável out_dir ...

Primeiro pensei em executar os pedaços primeiro, para que a variável seja definida ... Mas isso não resolveu o problema ...

Também reiniciei a sessão do R e isso não ajudou.

A última etapa foi fechar o R, salvar o espaço de trabalho e, após reabrir o R e carregar o espaço de trabalho, ele funcionou como um encanto novamente.

Não consegui encontrar o post original, onde alguém recomendou esse truque ...

FLUXO DE TRABALHO EXATO PARA REPRODUZIR

abra um novo projeto, nomeie-o de teste em uma nova pasta
criar um documento de remarcação r
mude o cabeçalho para:

---
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)
}
```

salve o documento como test.Rmd
clique no botão tricotar (o html agora é removido das opções do botão)
Isso vai falhar!

Feche o projeto!
Clique em salvar ambiente!

Abra o projeto e clique em tricotar!
Tudo funciona.

execute rm (list = ls ()) tudo funciona depois novamente

questionAnswers(1)

yourAnswerToTheQuestion