R Markdown:openBinaryFile:不存在(没有这样的文件或目录)

Posted

技术标签:

【中文标题】R Markdown:openBinaryFile:不存在(没有这样的文件或目录)【英文标题】:R Markdown: openBinaryFile: does not exist (No such file or directory) 【发布时间】:2018-06-18 01:46:51 【问题描述】:

我开发了一个闪亮的应用程序,允许用户通过 R Markdown 下载 html 报告。我正在尝试将自定义 css 和图像包含到我的 rmarkdown 文件中。但是,我不断收到此错误消息:

pandoc: Could not fetch (either css or image file)
openBinaryFile: does not exist (No such file or directory)

当我在 R Studio 上编织 .rmd 文件时,它能够引用我想要的图像文件或 css。但是,当我运行 Shiny 应用程序并下载 html 文件时,我收到了上述错误消息。我什至尝试将图像和 css 文件与 .rmd 文件放在同一工作目录中,但无济于事......

output:
  html_document:
   css: pandoc.css

(same error message as above)

一直在尝试为此寻找解决方案,但似乎无法...有人可以在这里提供帮助吗?

【问题讨论】:

我遇到了同样的错误。希望有人能解决它。 【参考方案1】:

我也遇到了这个问题,但对我来说,原因是 RStudio 项目位于共享驱动器上,并且我是通过网络位置打开它的。当我关闭项目并通过映射的网络驱动器打开它时,问题得到了解决。 (如果当您运行 getwd() 时,您的位置以 \\ 开头,这可能就是发生在您身上的事情。)

【讨论】:

如何“通过映射的网络驱动器”打开文件?谢谢! 首先,您需要知道您尝试访问的网络位置。接下来,在 Windows 文件管理器中,您需要右键单击右侧窗格中的“此 PC”,然后选择“映射网络驱动器”。通过对话框将之前的网络位置定义为带字母的驱动器。现在您有两种方法可以访问您正在打开的文件。使用驱动器号路径应该可以工作。 感谢@AColeman!知道为什么会出现这个问题吗?我不记得更改这些类型的目录设置。 我认为这是 Pandoc 的问题,rmarkdown 继承了它,因为它使用了 Pandoc。但说实话,自从找到解决方法后,我并没有过多地研究它。 当我遇到这个问题时,我使用的机器没有安装 WSL。并不是说它也不会导致同样的问题,但我知道在我的情况下这不是原因。【参考方案2】:

我遇到了类似的问题。我没有使用完整的文件路径。我正在使用〜/路径/到/文件。我将其更改为完整路径(即删除了 ~/)并且它起作用了。

【讨论】:

感谢@Haloom 的回答。补充一下,为了大家的利益,Pandoc 似乎可以引用带有空格的文件路径,所以你可以通过“/Home/My Folder”来引用它,不需要任何转义反斜杠或引号。跨度> 我认为 ~/ 是完整路径。离开 ~ 肯定是不正确的,但是用例如替换 ~ /home/user.至少方向是对的。 在 Wsl 中,您必须创建一个网络驱动器,因为 UNC 路径不起作用。【参考方案3】:

我最近在我的 Windows 工作计算机上遇到了这个问题,我只是在 Rprofile.site 文件中设置了 .libPaths()。这与之前的答案一致,但更详细一些。

第一步

检查您当前的路径:

> .libPaths()
[1] "\\\\my_work_server.se/some_subdir$/username/Dokument/R/win-library/3.6"
[2] "C:/R/R-3.6.3/library"

第 2 步

寻找\\\,在本例中是路径"\\\\my_work_server.se/some_subdir$/username/Dokument/R/win-library/3.6"。这个路径很可能是一些已经挂载的主目录,在我的例子中是H: = "\\\\my_work_server.se/some_subdir$/username/。如果您没有安装目录,您可能需要先修复此问题或将库路径更改为另一个。

第三步

因此,如果您在 C:/R/R-3.6.3/ 下安装了 R,则编辑文件 C:/R/R-3.6.3/etc/Rprofile.site 并添加:

.First <- function()
  .libPaths(c("H:/Dokument/R/win-library/3.6", "C:/R/R-3.6.3/library"))

记得把H:改成你挂载的网络目录。

第四步

就是这样,重新启动 R,你应该可以编织你的文档了。

【讨论】:

【参考方案4】:

我遇到的 RStudio 问题和 pandoc 错误(openBinaryFile 错误)是由于创建和加载项目的文件路径造成的。

Project File Path

当我创建项目时,我使用通用路径创建它,这是上图中的第二个选项。但是,当我将其更改为映射的驱动器号时,它上面的选项,我的 pandoc 错误消失了。

我正在运行 RStudio 1.2.1335 和 R 版本 3.4.4

【讨论】:

【参考方案5】:

我在带有网络文件存储的 Windows 机器上使用 RStudio、rmarkdown 和 pandoc 时遇到了类似的问题。我遵循了各种建议,将驱动器映射到一个字母,但仍然没有帮助。

最后,我发现我的 libPaths 中的路径之一包含网络位置/通用路径。我将 libpath 更新到映射的盘符驱动器,一切似乎都很顺利!

【讨论】:

【参考方案6】:

我收到了类似的错误消息,但问题是我在其中一个块标题中使用了# 符号:

```r show distribution of # of commits per month

如果你只是在 Rstudio 中运行笔记本,这没问题,但显然混淆了 knitr/pandoc:在编织时,我收到类似的错误消息

pandoc: <path>/figure-html/show distribution of : openBinaryFile: does not exist (No such file or directory)`)

从块标题中删除# 解决了这个问题。

【讨论】:

您好 Andreas,感谢您努力改进(格式化)问题;在这种情况下,R markdown 中的夹头实际上确实以 ```r ... 开头,所以我宁愿保持 sn-p 原样...【参考方案7】:

我相信我遇到了同样的问题。我首先尝试过Changing the Default Directory,但每次我去编织 RMarkdown 文件时,我都会收到相同的错误集,表明该进程仍在尝试访问我的网络 H 驱动器上的文件,而不是我的本地 C 驱动器,特别是它正在查看网络驱动器上的 rmarkdown 库文件。我以为我遵循了上面的建议,但在那之后我尝试删除网络驱动器中的 rmarkdown 文件夹

例如:\\fwnew12\Home\My Documents\R\win-library\3.6\rmarkdown.

这似乎迫使 R 只使用我的本地 C 驱动器 (C:/Program Files/R/R-3.6.3/library) 并最终成功编织 PDF。也许这不是推荐的方法,但我只需要一些可行的方法。

【讨论】:

【参考方案8】:

我只是在运行时遇到了同样的消息:

pandoc -s foo.html foo.md

我完全错过了应该出现的 -o 标志

pandoc -s -o foo.html foo.md

有了后者,一切都像魅力一样运作。

【讨论】:

以上是关于R Markdown:openBinaryFile:不存在(没有这样的文件或目录)的主要内容,如果未能解决你的问题,请参考以下文章

R语言R-markdown实战示例R-markdownR-markdown生成结果汇报的HTML文件

R markdown:我可以将pdf作为图像插入到r markdown文件中吗?

使用 KnitR 以编程方式在 R 中创建 Markdown 表

R-Markdown,重启和编辑章节编号

如何获取 R Markdown 文件,如`source('myfile.r')`?

markdown R Census API数据