【问题标题】:rmarkdown knitting error cannot replicate NULL to a non-zero lengthrmarkdown 编织错误无法将 NULL 复制到非零长度
【发布时间】:2022-07-08 19:45:30
【问题描述】:

我有一个 rmarkdown,它循环呈现其他 rmarkdown 的列表:

```{r}
for(i in 0:22){
   save(i, file = "/path/to/i.RData")
   rmarkdown::render("path/to/secondRmarkdown.Rmd", output_file = paste0("/path/to/Results/Report_", i, ".html"))
}
```

在这个块之前,我在同一个 rmarkdown 中有一个非常相似的块,它在编织主块时循环没有问题。此外,当我手动运行块时,它也会循环。

但是,在编织时,此特定块在仅渲染 i=0 的第一个 rmarkdown 文件(成功)后给出以下错误:

# Error in rep_len(label, length(meta): cannot replicate NULL to a non-zero length

我将 secondRmarkdown.Rmd 修改为一个简单的文件,以确保它不是其中的内容:

```{r}    
load(file = "/path/to/i.RData")
print(i)
```

我有 Ubuntu 5.13.0-40。 R 版本 4.2.0、Rstudio 版本 2022.02.2、rmarkdown 版本 2.14

有什么想法吗?蒂亚!

【问题讨论】:

  • 对某些人来说很明显;对其他人来说并不明显(我知道但有时仍会搞砸)。您是否确保将 RMD 中的任何路径引用记录为 RMD 的位置作为 RMD 的“工作目录”?也许,不是字面上的,但出于所有意图和目的,这基本上就是发生的事情。而对于 R 文件,当前工作目录正是您设置的目录。
  • 嗨@Kat,我实际上已经尝试过了。在我循环的块和循环的 rmarkdown 中设置 wd。仍然只渲染系列的第一个元素:(

标签: r-markdown


【解决方案1】:

我想通了:这是一个缓存问题。

要解决它,请将缓存设置为 FALSE:

knitr::opts_chunk$set(
      cache = FALSE)

或者如果想保留缓存,禁用cache.lazy:

knitr::opts_chunk$set(
  cache = TRUE,
  cache.lazy = FALSE)

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2017-12-07
    • 2021-06-04
    • 1970-01-01
    • 2021-02-07
    • 2020-10-04
    相关资源
    最近更新 更多