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

Как заставить RStudio автоматически скомпилировать R Markdown Vignettes?

Я пытаюсь написать R-виньетки с использованием R Markdown. Я использую инструменты для создания пакетов R Studio.

У меня R больше версии 3.0.

У меня есть файл .Rmd в папке vignettes, который содержит следующий текст вверху:

<!--
%\VignetteEngine{knitr::knitr}
%\VignetteIndexEntry{An Introduction to the bootcorrelations package}
-->

В моем файле DESCRIPTION есть следующее:

VignetteBuilder: knitr
Suggests: knitr

Когда я очищаю, строю или создаю и перезагружаю пакет в RStudio, отображается источник виньетки, но не HTML (т.е. нет HTML файла в inst/man).

enter image description here

Как я могу заставить RStudio автоматически создавать HTML из R Markdown Vignette?

Я прочитал Yihui post на R Package Vignettes с Markdown и предлагает использовать make файл, но это более поздний о виньетках винта предполагает, что make файл больше не требуется.

Я также понимаю, что я мог вручную создать виньетку HTML с помощью следующей команды:

library(knitr)
knit(input='vignettes/foo.Rmd', output='inst/doc/foo.md')
library(markdown)
markdownToHTML('inst/doc/foo.md', 'inst/doc/foo.html')

Воспроизводимый пример:

Vectorize(dir.create)(c("test", "test/R", "test/man", "test/vignettes"))

cat(
  'Package: test
Title: Test pkg
Description: Investigate how to auto-compile markdown vignettes
Version: 0.0-1
Date: 2015-03-15
Author: Jeromy Anglim
Maintainer: Jeromy Anglim <[email protected]>
Suggests: knitr
License: Unlimited
VignetteBuilder: knitr',
  file = "test/DESCRIPTION"
)

cat(
  '---
title: "Introduction"
author: "Jeromy Anglim"
date: "`r Sys.Date()`"
output: html_document
---

<!--
%\\VignetteEngine{knitr::rmarkdown}
%\\VignetteIndexEntry{Introduction}
-->

# Introduction

A sample vignette!

```{r}
1 + 1
```',
  file = "test/vignettes/intro.Rmd"
)

cat(
  "#' Nothing
#' This function is only needed so that roxygen generates a NAMESPACE file.
#' @export
nothing <- function() 0",
  file = "test/R/nothing.R"
)

library(roxygen2)
library(devtools)

roxygenise("test")
build("test")
4b9b3361

Ответ 1

Обновление: Думаю, что в боковом направлении есть как минимум три варианта.

1. Используйте build_vignettes()

Как указывает @Hadley, запуск build_vignettes() из пакета devtools будет создавать виньетки и поместить их в каталог inst/man пакета.

devtools::build_vignettes()

Построение виньетки означает, что вы получаете три версии в inst/man:

  • источник Rmd
  • вязаная или тканая HTML-виньетка
  • и код R в кодовых блоках

Это не связано с командой сборки и перезагрузки в RStudio, но это однолинейное решение задачи. И его можно легко включить в makefile.

2. Используйте Knit HTML в Rstudio

Как отмечает @TylerRinker, вы можете просто использовать Knit HTML в Rstudio. Это добавит как md, так и HTML вязаные версии rmd виньетки в каталог vignettes.

Это также не связано с процессом сборки, но, как указывает @TylerRinker, часто вы не хотите, чтобы виньетки привязывались к основному процессу сборки. Это также дает вам возможность предоставить файл md, который может быть хорошим вариантом для отображения виньетки на github, хотя http://htmlpreview.github.com/ является вариантом для отображения виджеты HTML на GitHub.

3. Создайте исходный пакет и извлеките из сжатого файла

Build - Build Source Package в RStudio соответствует R CMD build. При запуске создается сжатый файл tar.gz, который содержит в каталоге inst/doc файлы Rmd, R и HTML для оригинального файла vignette rmd.

Это описано в официальной документации для написания виньет пакетов, в которой вам предлагается использовать R CMD build для создания виджета PDF и HTML.

Так что можно

  • Источник сборки
  • Разархивируйте файл tar.gz
  • Просмотрите и откройте полученный файл