knitr .Rmd晕影不会出现与晕影()

时间:2015-11-09 17:26:12

标签: r packages knitr

在我使用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.name/knitr/demo/vignette/http://r-pkgs.had.co.nz/vignettes.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/目录只包含.Rmd文件(没有PDF),但这似乎与https://github.com/yihui/knitr/tree/master/vignettes相同。

3 个答案:

答案 0 :(得分:27)

注意 devtools 默认情况下,当devtools::install()(某些install_*函数(如install_github())与目录中的包相同时,默认情况下不会构建小插图。安装程序包时必须指定参数build_vignettes = TRUE。目前,如果您只使用RStudio按钮Build & Reload,则无法使用 devtools 构建小插图。您必须Build Source Package,并在tarball上运行R CMD INSTALL。或者在R控制台中运行devtools::install(build_vignettes = TRUE)

答案 1 :(得分:2)

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

Configure Build Tools...,当您点击R CMD INSTALL按钮时,RStudio可让我们为Build & Reload自定义选项。在当前实现中,它的行为类似于在程序包目录的 parent 目录中运行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无效。然后,我们可以在使用我们自己的vignette/安装软件包之前,将inst/doc/中构建的html文件复制到R CMD INSTALL。 (cd pkg;在后​​续命令中多次从类型包名称中解放出来。echo使RStudio附加的包名无效。

我知道这个技巧有很多缺点,例如硬编码包名,如果包名改变后者,则容易出错。

  

使用它需要您自担风险。

希望RStudio很快就会成为一个优雅的解决方案。

答案 2 :(得分: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