gpt4 book ai didi

r - knit() 内的 purl() 重复标签错误

转载 作者:行者123 更新时间:2023-12-02 00:46:10 26 4
gpt4 key购买 nike

我正在编织一个 .Rmd 文件,并且希望在每次运行 knit 时有两个输出:html 和 purl'ed R 脚本。这可以通过以下 Rmd 文件来完成:

---
title: "Purl MWE"
output: html_document
---

```{r}
## This chunk automatically generates a text .R version of this script when running within knitr.
input = knitr::current_input() # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```

```{r}
x=1
x
```

如果您不命名该 block ,它会正常工作,并且每次运行 knit() (或在 RStudio 中单击 knit)时都会获得 html 和 .R 输出。

但是,如果您命名该 block ,它将失败。例如:

<小时/>
title: "Purl MWE"
output: html_document
---

```{r}
## This chunk automatically generates a text .R version of this script when running within knitr.
input = knitr::current_input() # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```


```{r test}
x=1
x
```

它失败了:

Quitting from lines 7-14 (Purl.Rmd) 
Error in parse_block(g[-1], g[1], params.src) : duplicate label 'test'
Calls: <Anonymous> ... process_file -> split_file -> lapply -> FUN -> parse_block
Execution halted

如果注释掉purl()调用,它将与指定的 block 一起使用。因此,purl() 调用也是如何命名 block 的,这会导致 knit() 认为存在重复的 block 名称,即使没有重复项也是如此。

有没有办法在 .Rmd 文件中包含 purl() 命令,以便生成两个输出(html 和 R)?或者有更好的方法来做到这一点吗?我的最终目标是使用新的 rmarkdown::render_site() 构建一个网站,该网站在每次编译网站时都会更新 HTML 和 R 输出。

最佳答案

您可以通过在文件中包含 options(knitr.duplicate.label = 'allow') 来允许重复标签,如下所示:

title: "Purl MWE"
output: html_document
---

```{r GlobalOptions}
options(knitr.duplicate.label = 'allow')
```


```{r}
## This chunk automatically generates a text .R version of this script when running within knitr.
input = knitr::current_input() # filename of input document
output = paste(tools::file_path_sans_ext(input), 'R', sep = '.')
knitr::purl(input,output,documentation=1,quiet=T)
```


```{r test}
x=1
x
```

此代码未记录在 knitr 上网站,但您可以直接从 Github 跟踪最新更改:https://github.com/yihui/knitr/blob/master/NEWS.md

关于r - knit() 内的 purl() 重复标签错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com