knitr .Rmd vignette()不会出现vignette。

问题描述 投票:20回答:3

在我用R Studio开发的一个软件包中,我通过以下方式创建小插曲。devtools::use_vignette("mydoc.Rnw"),它给出了一个标准的小插图头,如

---
title: "Title"
author: "Michael Friendly"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Title}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

我已经遵循了所有的指示,在 http:/yihui.nameknitrdemovignettehttp:/r-pkgs.had.co.nzvignettes.html. 小插曲 在CRAN页面上列出了该软件包,但在加载了该软件包的R会话中似乎无法访问它们。

 > browseVignettes("matlib")
 No vignettes found by browseVignettes("matlib") 

> library(tools)
> names(vignetteEngine(package = 'matlib'))
Error in getEngine(name, package) : 
  None of packages ‘matlib’ have registered vignette engines

我知道其他的软件包也有 knitr-处理后的.Rmd vignettes可以从软件包中访问,但不明白为什么我的不能访问。

我的 vignettes/ 目录中只包含.Rmd文件(没有PDF),但这似乎与,例如。https:/github.comyihuiknitrtreemastervignettes。.

r packages knitr
3个回答
39
投票

笔记 开发工具 的时候,默认情况下不会建立小插图。devtools::install() (对某些人来说也是如此 install_* 诸如此类的功能 install_github())从一个目录中取出一个包。你必须指定参数 build_vignettes = TRUE 当您安装该软件包时。目前还没有办法使用 开发工具 如果您只是使用RStudio按钮 Build & Reload. 你必须... Build Source Package,并运行 R CMD INSTALL 在焦油球上。或运行 devtools::install(build_vignettes = TRUE) 在R控制台中。


4
投票

好吧,我找到了一个可以解决这种情况的黑魔法。

Configure Build Tools...RStudio允许我们自定义选项,用于 R CMD INSTALL 当您点击 Build & Reload 按钮。在当前的实现中,它的行为就像运行了 R CMD INSTALL [options] pkg父母 目录下的包。事实证明,这些选项可以是任意字符串,甚至可以包括 ;,从而使我们能够运行bash命令。

例如,我们可以指定 -v; cd pkg; cp vignettes/*html inst/doc; R CMD INSTALL --no-multiarch --with-keep.source .; echo

这样一来。-v 使RStudio的 R CMD INSTALL. 然后,我们就可以把建好的html文件复制到 vignette/inst/doc/ 在安装软件包之前,我们使用自己的 R CMD INSTALL. (cd pkg; 使我们无需在后续命令中多次输入包名。echo 使RStudio附加的包名无效。

我知道这个技巧有很多缺点,比如硬编码包名,如果后面更改包名,容易出错。

使用时风险自负。

希望RStudio能尽快推出一个优雅的解决方案。


0
投票

在我这边,使用 devtools::install(build_vignettes = TRUE) 会解决小插图的问题。browseVignettes("mypackage") 会正常工作。但每次我试图打开一个帮助文件的时候 ?myfunction,就会出现错误信息。

Error in fetch(key) : lazy-load database 
'/Library/Frameworks/R.framework/Versions/3.6/Resources/library/mypackage/help/mypackage.rdb' is corrupt

在我看来,解决这两个问题的最安全的方法是: R CMD build mypackageR CMD INSTALL mypackage.1.0.tar.gz.

© www.soinside.com 2019 - 2024. All rights reserved.