首页 > 解决方案 > 由于代码检查包并在它们丢失时安装它们,Rmarkdown 文档的编织失败。为什么以及我能做什么?

问题描述

这里的第一个问题,所以我希望我做的一切都是正确的。

我在用

if (!require(package)) install.packages('package')
library(package)

在我的 Rmarkdown 文档的顶部检查是否安装了一个包,如果没有,安装它,然后当然加载它。出于某种原因,第一行代码的存在阻止了我的文档被编织,并出现以下错误:

[...]
 * 0x57adc60    0x41a98d3 C:\PROGRA~1\RStudio\bin\pandoc\pandoc.exe+0x3da98d3
 * 0x57adc68    0x4280a19 C:\PROGRA~1\RStudio\bin\pandoc\pandoc.exe+0x3e80a19

   ... (maximum recursion depth reached.)

Error: pandoc document conversion failed with error 11

我通过仅从if (!require...文档中删除行来测试它,我确信它们是唯一的罪魁祸首。有谁知道为什么,并且有任何代码替代品可以做同样的工作,同时允许我编织我的文档?

标签: rr-markdown

解决方案


这可能是由于 package 是一个向量,如果将这些行替换为以下内容,您会得到什么?

pkg_vec <- c("naniar", "pander")

for (pkg in pkg_vec){
        if (!require(package = pkg, character.only = TRUE))
        {
                install.packages(pkgs = pkg, character.only = TRUE)}
        library(pkg, character.only = TRUE)
}

推荐阅读