Подтвердить что ты не робот

Rmarkdown направляет выходной файл в каталог

Я нашел очень хороший трюк (ссылка) к функции knitr, где вы можете сохранить свой выходной html в выходной папке и в другое имя файла.

Единственное, что вам нужно сделать для заголовка, это следующее:

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

Это работает на моем Mac "иногда" очень хорошо, но иногда у него есть проблемы с поиском переменной out_dir...

Сначала я подумал о том, чтобы сначала выполнить куски, поэтому переменная установлена ​​... Но это не решило проблему...

Я также перезапустил сеанс R, и это не помогло.

Последний шаг заключался в закрытии R, сохранении рабочего пространства и после повторного открытия R и загрузки рабочего пространства он снова работает как шарм.

Я не мог найти оригинальный пост, где кто-то рекомендовал этот трюк...

ЭКСТРАКТНАЯ РАБОЧАЯ КОЛЛЕКЦИЯ ДЛЯ ВОСПРОИЗВЕДЕНИЯ

открыть новый проект, назовите его тест в новой папке
создать документ с уценкой r
измените заголовок на:

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

сохранить документ как test.Rmd
нажмите кнопку вязания (html теперь удаляется из опций кнопки)
Это не удастся!

Закройте проект!
Нажмите на среду сохранения!

Откройте проект и нажмите вязать!
Все работает.

выполнить rm (list = ls()) все снова будет работать

4b9b3361

Ответ 1

Вы можете попробовать установить переменную out_dir в функции, которую вы даете knit для рендеринга:

knit: (function(inputFile, encoding) { 
      out_dir <- 'test';
      rmarkdown::render(inputFile,
                        encoding=encoding, 
                        output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })