R包内部是否存在决定vignette安装时是否编译的相关配置?
R包Vignette默认编译配置方案
必需的包内配置
要让你的包vignette能被正常识别和编译,必须完成以下配置:
- 编辑包根目录的
DESCRIPTION文件,添加两个字段:- 将
knitr、rmarkdown加入建议依赖:Suggests: knitr, rmarkdown - 指定vignette构建工具:
VignetteBuilder: knitr
- 将
- 将所有vignette源文件存放在包根目录的
vignettes/文件夹下,后缀为.Rmd或.Rnw - 每个vignette的头部必须包含标准Vignette声明,以Rmd格式为例:
--- title: "Vignette标题" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Vignette标题} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} ---
不同安装方式的行为差异说明
你测试iNEXT包时观测到的差异是R安装工具的默认规则导致的,和包配置无关:
- 通过
install.packages()从CRAN安装的是CRAN预构建的二进制包,CRAN在审核上传包时已经提前编译好vignette打包进二进制文件,所以安装后直接可见 install_github()默认走源码安装路径,devtools的该函数build_vignettes参数默认值为FALSE,因为编译vignette会明显增加安装耗时,所以默认不开启,这才是你第二次安装时看不到vignette的原因
可选优化(GitHub源码安装默认带vignette)
如果希望用户直接从GitHub安装源码时也能默认看到vignette,可以在本地提前编译好vignette,将生成的.html、.R等输出文件存放到包根目录的inst/doc/文件夹下,再提交到代码仓库。安装时R会自动将该文件夹下的内容复制到包的安装目录,不需要用户额外开启编译参数就能访问vignette。
内容的提问来源于stack exchange,提问作者Michael Roswell
相关产品推荐
相关产品推荐

