在我用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.nameknitrdemovignette 和 http:/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。.
笔记 开发工具 的时候,默认情况下不会建立小插图。devtools::install()
(对某些人来说也是如此 install_*
诸如此类的功能 install_github()
)从一个目录中取出一个包。你必须指定参数 build_vignettes = TRUE
当您安装该软件包时。目前还没有办法使用 开发工具 如果您只是使用RStudio按钮 Build & Reload
. 你必须... Build Source Package
,并运行 R CMD INSTALL
在焦油球上。或运行 devtools::install(build_vignettes = TRUE)
在R控制台中。
好吧,我找到了一个可以解决这种情况的黑魔法。
从 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能尽快推出一个优雅的解决方案。
在我这边,使用 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 mypackage
和 R CMD INSTALL mypackage.1.0.tar.gz
.