如果我在包中使用devtools::use_vignette("my-vignette"),那么运行devtools::build_vignette()就可以了。
但是,一旦我从包中添加了一个调用,它就会停止工作,出现错误could not find function "myfunc"。如果我添加了一个library(mypackage)调用,就会得到错误there is no package called 'mypackage'。
(我应该注意,我的包检查、构建和安装非常干净,没有任何小插曲,运行devtools::load_all()也可以很好地处理交互式会话。)
我知道,如果我构建和安装我的软件包,然后我可以得到的小插曲。这似乎是一种非常低效和危险的开发方法;本质上,迫使我在每次提交时重新构建和重新安装整个包,以测试该程序没有中断。
还有别的方法可以让这个小角色认识到正在进行中的一揽子计划吗?
发布于 2016-03-04 15:43:25
如果您正在使用RStudio IDE (这对于包开发非常有用),您可以通过单击针织按钮来呈现由创建的文档。它将创建一个预览版本的你的维涅特。顺便说一句,Rmd为您提供了有用的快捷键和按钮,可以逐块执行您的RStudio文档,以测试它是否正常工作。
如果不使用RStudio IDE,则可以使用rmarkdown::render函数在不构建包的情况下呈现文档。
然而,为了工作,你的活力要求你的包被加载。因此,正如您所说的,您必须调用library(mypackage),所以您的包必须安装。
您可以在命令行中使用devtools::install(build_vignette = FALSE)安装您的包,而无需使用vignette。在RStudio IDE中,按钮Build & Reload可以插入所有包。
对于Rstudio的非用户来说,另一种解决方案是在您的vignette中使用devtools::load_all(path to your package),以便模拟您的包在vignette环境中的安装。然后,您可以在不需要安装软件包的情况下用devtools::build vignette构建您的vignette。
我要强调的是,当您构建包时,vignette是自动生成的。因此,当开发完成后,在devtools::load_all中替换为library,因为在构建包时,您的包是在构建该软件包之前加载的。
发布于 2016-06-08 03:38:28
如果你在github中查找哈德利·韦翰的软件包,你会发现他在他的小插曲顶部有一个库(Xyz),例如https://github.com/tidyverse/dplyr/blob/master/vignettes/dplyr.Rmd。
然后,构建小片段的他的推荐方法可以工作:
您可以使用
*devtools::build_vignettes()*从控制台构建所有的小片段,但这很少有用。相反,使用devtools::build()创建包含小片段的包包。
我相信这就是你需要向CRAN提交一个包裹的地方。
但是,这是一个缓慢的开发周期,因此对于活动编码,您可以在devtools::load_all()中插入一行来使用RStudio中的针织物。
发布于 2020-04-04 00:11:47
我知道已经有答案了,但这也是我用手写体解决同样的问题的方法。
我不确定这是否适用于build_vignette(),但由于同样的错误,当我在编织维涅特时遇到困难时,我必须做的是:
<path/to/your/Rpackage>/NAMESPACE,我必须为我想要在vignette中使用的每个函数添加一次export(myFuncName)和useDynLib(myPackageName)。<path/to/your/Rpackage>/DESCRIPTION选项--它是VignetteBuilder: knitr。https://stackoverflow.com/questions/35727645
复制相似问题