首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >devtools build_vignette找不到函数

devtools build_vignette找不到函数
EN

Stack Overflow用户
提问于 2016-03-01 16:02:23
回答 3查看 3.6K关注 0票数 6

如果我在包中使用devtools::use_vignette("my-vignette"),那么运行devtools::build_vignette()就可以了。

但是,一旦我从包中添加了一个调用,它就会停止工作,出现错误could not find function "myfunc"。如果我添加了一个library(mypackage)调用,就会得到错误there is no package called 'mypackage'

(我应该注意,我的包检查、构建和安装非常干净,没有任何小插曲,运行devtools::load_all()也可以很好地处理交互式会话。)

我知道,如果我构建和安装我的软件包,然后我可以得到的小插曲。这似乎是一种非常低效和危险的开发方法;本质上,迫使我在每次提交时重新构建和重新安装整个包,以测试该程序没有中断。

还有别的方法可以让这个小角色认识到正在进行中的一揽子计划吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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,因为在构建包时,您的包是在构建该软件包之前加载的。

票数 7
EN

Stack Overflow用户

发布于 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中的针织物。

票数 3
EN

Stack Overflow用户

发布于 2020-04-04 00:11:47

我知道已经有答案了,但这也是我用手写体解决同样的问题的方法。

我不确定这是否适用于build_vignette(),但由于同样的错误,当我在编织维涅特时遇到困难时,我必须做的是:

  1. <path/to/your/Rpackage>/NAMESPACE,我必须为我想要在vignette中使用的每个函数添加一次export(myFuncName)useDynLib(myPackageName)
  2. 我必须在VignetteBuilder文件中为我指定一个<path/to/your/Rpackage>/DESCRIPTION选项--它是VignetteBuilder: knitr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35727645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档