我使用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文件:
Vignette.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:
https://dev59.com/m1wX5IYBdhLWcg3wnwcy#49463061 表明 RStudio 使用包文件夹作为根目录来构建文档(这可以解释文件找不到的问题)。
更新2:
我已经在 GitHub 上创建了一个最小可重现示例包,还附有发现的摘要:
https://github.com/aryoda/R_pkg_knitr_child_vignette_issue
更新3:
我已经在 knitr
上开了一个问题(https://github.com/yihui/knitr/issues/1540),但是 @user2554330 已经确定 tools
命名空间是问题的原因之一...
更新4:
请参阅 Duncan Murdoch 开放的 Bugzilla bug 条目:https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17416
devtools::build_vignettes()
,会发生什么?此后,在构建或检查期间我再也没有收到任何错误或警告了,但是inst/doc
仍然没有包含子Rmd文件。 - R Yodatools::buildVignettes
(R CMD build + check调用此函数),它不是问题所在。由于您提供了解决方法,我将接受您的答案。谢谢! - R Yodatools::.install_package_vignettes2
中,它在没有复制所有文件的情况下在doc
目录上调用tools::pkgVignettes
。我将提交一个错误报告。 - user2554330