And*_*rau 10 packages r cran knitr
我目前正在将一篇JSS文章转换knitr为一个R 包小插图.但是,我对插图的位置,结构和我应该如何处理所需的非常长的计算时间有疑问,这在普通笔记本电脑上需要大约2天.
在官方文件提供几乎对此没有任何信息.邮件列表中的答案中的简短注释是我在搜索时找到的唯一信息.Brian Ripley在这里写道:
特别是,CRAN确实接受带有Sweave小插图的包裹,这些小插曲需要很长时间才能检查 - 一个需要大约8个小时[...].我们只是要求在提交时告知我们.
哈德利威克姆对小插曲的描述说eval = FALSE是一个大块的选择.但是,在我的情况下,这不是一种可行的方法,因为需要从计算中生成数据.
此演示文稿表明,/inst/doc将用于预编译和重型小插曲.但是,这与使用/vignettes包装晕影的新指南(或什么?)不太一致.
目前,我已经放置了我的源文件,/vignettes并且我创建了一个.RData文件,其中包含计算量最大的对象(并且也非常大).然后脚本检查对象是否可通过该.RData文件获得,如果没有,则创建对象.因此,从头开始完全编译和运行,.RData可以简单地删除该文件.
有没有人对这个问题有一些经验或指示?小插图应该在/vignettes或/inst/doc?如果是前者是首选,我在哪里放置所需的文件,如.bib,.RData等?我必须承认我发现/vignettesvs /inst/doc有些令人困惑.
我为基于 knitr 的小插图提供了以下解决方案。我假设您使用devtools进行包维护。为了防止 R 在包检查(即R CMD check)期间运行小插图代码,这将使您包括计算量大的小插图,小插图必须:
.R在文件中inst/doc,当你执行devtools::build_vignettes()。所述knitr包提供引擎不纠结R代码里面,包括knitr::rmarkdown_notangle其可被用作替代的下降knitr::rmarkdown。R CMD check。这可以通过在小插图的顶部放置代码来实现,该代码检查各种设置并knitr::opts_chunk$set(eval = ...)在适当时使用设置块设置。下面显示的代码是从knitr包中借来的,非常感谢 Yihui Xie 研究如何做到这一点。下面是使用这两种策略,以便它可以使用内置一颗rmarkdown小插曲文件的例子devtools::build_vignettes()和过程中不会有执行其代码R CMD check。请注意,在构建包时仍会执行代码(例如,在devtools::build()和期间完成devtools::check())。
---
title: "example vignette"
output:
rmarkdown::html_document:
self_contained: yes
fontsize: 11pt
documentclass: article
vignette: >
%\VignetteIndexEntry{example vignette}
%\VignetteEngine{knitr::rmarkdown_notangle}
---
```{r, include = FALSE}
is_check <- ("CheckExEnv" %in% search()) || any(c("_R_CHECK_TIMINGS_",
"_R_CHECK_LICENSE_") %in% names(Sys.getenv()))
knitr::opts_chunk$set(eval = !is_check)
```
```{r}
Sys.sleep(100)
```
Run Code Online (Sandbox Code Playgroud)
有关这种方法的示例,请参阅 GitHub 上的开发包的小插图。
| 归档时间: |
|
| 查看次数: |
3398 次 |
| 最近记录: |