包生成失败,因为vignette找不到子Rmd文件

包生成失败,因为vignette找不到子Rmd文件,r,r-markdown,knitr,r-package,R,R Markdown,Knitr,R Package,我已经使用child块模块化了我的vignette Rmd文件,以便能够在其他Rmd文档中重用子Rmd文件 程序包生成失败(在RStudio中,并带有R CMD build.),并显示以下错误消息: ** installing vignettes ‘Vignette.Rmd’ using ‘UTF-8’ Warning in readLines(if (is.character(input2)) { : cannot open file 'child_doc.Rmd': No suc

我已经使用
child
块模块化了我的vignette Rmd文件,以便能够在其他Rmd文档中重用子Rmd文件

程序包生成失败(在RStudio中,并带有
R CMD build.
),并显示以下错误消息:

** installing vignettes
   ‘Vignette.Rmd’ using ‘UTF-8’ 
Warning in readLines(if (is.character(input2)) { :
  cannot open file 'child_doc.Rmd': No such file or directory
Quitting from lines 10-11 (child_doc.Rmd) 
Error in readLines(if (is.character(input2)) { : 
  cannot open the connection
ERROR: installing vignettes failed
如何构建我的包(让R找到我的子Rmd文件)?

Rmd文件示例:

渐晕图

---
title: "title"
author: "me"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{title}
  %\VignetteEngine{rmarkdown::render}
  %\VignetteEncoding{UTF-8}

main doc

```{r child = "child_doc.Rmd"}
```
child_doc.Rmd:

# This is from the child doc
lorem ipsum
更新1:

指示RStudio使用包文件夹作为根目录构建渐晕图(这可以解释为什么找不到文件)

更新2:

如果您已经在github创建了一个最小的可复制示例包以及一份调查结果摘要:

更新3:

我在
knitr
()上打开了一个问题,但@user2554330已将
工具
命名空间确定为问题的原因之一

更新4:

请参阅Duncan Murdoch打开的bugzilla bug条目:

这看起来像一个bug(或者可能不止一个)。我可能会称之为R中的bug,但它可能是knitr中的bug。构建tarball时,R将主文件复制到
inst/doc
,但不复制子文件
knitr
然后看着它,因为它没有看到孩子,所以它退出了

要生成包,只需在
inst/doc
中创建一个与子文件同名的空文件。但这还不足以通过检查

当检查包时,R将看到子文件位于
inst/doc
,并且会因为它不是一个正确的小插曲而感到不安。所以你需要愚弄R,使其认为它是一个

就我所见,有一个简单(尽管丑陋)的解决办法。只需将一个名为
child_doc.Rmd
的文件放入
inst/doc
目录。为了让R认为这是一个小插曲,复制这些台词

  %\VignetteIndexEntry{title}
  %\VignetteEngine{rmarkdown::render}
  %\VignetteEncoding{UTF-8}
从主文件。否则,内容似乎无关紧要,因此我不会在那里放任何其他内容

将真实的
子文档.Rmd
文件放入
vignettes
目录。我认为如果您这样做,您的包将构建和检查,不会出现错误

这可能值得一个bug报告,但我不确定该修复什么。也许
knitr
在检查时应该更宽容,或者R应该更快地复制文件


糟糕的是,这个解决方案太难看了,一旦修复了错误,可能会导致其他问题。

很棒的分析!我也会把它归类为bug。如果(不应用所描述的解决方法)调用
devtools::build\u vignettes()
,会发生什么情况?之后,我在构建或检查过程中不再收到任何错误或警告,但
inst/doc
仍然不包含子Rmd文件。这通过了构建,但我的检查失败。我也在使用R3.4.4(在Linux上),明天我将尝试使用Windows和另一个R版本构建。感谢您的帮助,我现在正在调试代码,并尝试确定R或knitr是问题的根源,以便能够打开问题。目前看来,如果使用正确的参数调用,则
tools::buildVignettes
不是问题(R CMD build+check根据帮助调用此函数)。我会接受你的回答,因为你提供了一个解决方案。谢谢!问题似乎出在
tools::。安装_package\u vignettes2
,它在
doc
目录上调用
tools::pkgignettes
,而不复制所有文件。我将提交一个bug报告。哇,代码中的深度挖掘:-)很高兴听到这个。我已经在github为knitr发行了一期,也许您可以链接您的门票,以实现一个大画面: