R Bookdown在构建书籍之前运行脚本/ purl(使用Build Book按钮)

时间:2017-11-01 22:34:24

标签: r knitr r-markdown bookdown

我想在制作预订书之前运行R脚本。该脚本在特定purl()文件上运行Rmd,这些文件再次包含在本书中(因此需要更新,因为Rmd文件可能已更改)。

我想自动化这个,因为在构建本书之前很容易忘记运行脚本。另外,我还要坚持使用"构建书籍#34;按钮因为这很方便。

我尝试在index.Rmd文件中包含该脚本,但这导致了一个重复的标签"问题由this unanswered question描述。 @Adam M. Wilson描述的错误在使用bookdown时仍然是持久的,即使在完全省略命名块时也是如此。

他是使用a minimal example of a bookdown project的最小例子。错误发布在下面。

这个问题有解决方法吗? (a)在一个块中运行purl()的解决方案,或者(b)在构建图书之前自动运行R脚本?

---
title: "A Book"
author: "Frida Gomam"
site: bookdown::bookdown_site
documentclass: book
output:
  bookdown::gitbook: default
  bookdown::pdf_book: default
---

# Hello World

```{r}
library(stringr)

rmds <- list.files(pattern = ".Rmd")

for (file in rmds){
  file_r <- gsub("Rmd","R",file)                      
  if(file.exists(file_r)){
    file.remove(file_r)
  }
  knitr::purl(file,documentation = 0,output = file_r)
}
```

Hi.

Bye.

以下是错误消息:

Quitting from lines 14-27 (index.Rmd) 
Error in parse_block(g[-1], g[1], params.src) : 
  duplicate label 'unnamed-chunk-1'
Calls: <Anonymous> ... process_file -> split_file -> lapply -> FUN -> parse_block
Please delete _main.Rmd after you finish debugging the error.
Execution halted

Exited with status 1.

1 个答案:

答案 0 :(得分:0)

您在降价文件中使用了相同的名称。例如

{r性别与健康之间的关系} .... ....

{r性别与健康之间的关系} .... ....

然后编织时会遇到错误