如何让RStudio自动编译R Markdown Vignettes?

Jer*_*lim 29 r rstudio knitr r-markdown

我正在尝试使用R Markdown编写R Package vignet.我正在使用R Studio的包创作工具.

我的R大于3.0版.

我在vignettes文件夹中有一个.Rmd文件,顶部包含以下文本:

<!--
%\VignetteEngine{knitr::knitr}
%\VignetteIndexEntry{An Introduction to the bootcorrelations package}
-->
Run Code Online (Sandbox Code Playgroud)

我的DESCRIPTION文件中有以下内容:

VignetteBuilder: knitr
Suggests: knitr
Run Code Online (Sandbox Code Playgroud)

当我在RStudio中清理和构建或重新加载包时,会显示插图源,但不显示HTML(即,没有HTML文件inst/man).

在此输入图像描述

如何让RStudio从R Markdown Vignette自动创建HTML?

我已经阅读了Yihui关于使用Markdown的R Package Vignettes的帖子,它建议使用makefile,但是这个关于knitr vignettes的最新文档表明不再需要makefile.

我也意识到我可以使用如下命令手动创建HTML插图:

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

一个可重复的例子:

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 <a@b.com>
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")
Run Code Online (Sandbox Code Playgroud)

Jer*_*lim 16

更新:横向思考,至少有三种选择.

1.使用build_vignettes()

正如@Hadley指出的那样,build_vignettes()devtools包中运行将构建小插图并将它们放在inst/man包的目录中.

devtools::build_vignettes()
Run Code Online (Sandbox Code Playgroud)

构建小插图意味着您将获得三个版本inst/man:

  1. Rmd来源
  2. 针织或编织的HTML小插图
  3. 和代码块中的R代码

这与RStudio中的build和reload命令无关,但它是该任务的一行解决方案.它可以很容易地融入到makefile.

2. Knit HTML在Rstudio中使用

正如@TylerRinker所说,你可以在Rstudio中使用Knit HTML.这会将rmd vignette的md和HTML编织版本添加到vignettes目录中.

这也与构建过程无关,但正如@TylerRinker指出的那样,通常你不希望将晕影绑定到主构建过程.这也有一个好处,你可以给你一个md文件,它可以很好地显示github上的插图,虽然http://htmlpreview.github.com/是一个在github上显示HTML插图的选项.

3.构建源包并从压缩文件中提取

Build - Build Source Package在RStudio对应R CMD build.运行时,tar.gz会创建一个压缩文件,该文件在inst/doc目录中包含原始rmd晕影文件的Rmd,R和HTML文件.

在编写包装晕影官方文档中对此进行了描述,该文档指示您使用它R CMD build来生成PDF和HTML小插图.

所以有可能

  1. 构建源
  2. 解压缩tar.gz文件
  3. 浏览并打开生成的文件

  • 你可以使用`devtools :: build_vignettes()` (3认同)
  • @StevieP`inst/doc` (2认同)
  • 所以,我使用的是RStudio版本0.98.836,这些选项都不起作用.特别是,`build_vignettes()`返回`NULL`尽管有一个真实的.mmd在`vignettes /`和`knit HTML`中没有保存`vignet /`中的.md或.html文件......任何理由都是为什么会这样? (2认同)