如何解决pandoc问题

Tho*_*ing 6 r pandoc visual-studio-code

我在VSCode中使用时遇到了问题saveWidget,可能是pandoc.

\n\n

当我在 Rstudio 中运行以下行时,它运行良好并且mtcars.html可以生成

\n\n
htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html", selfcontained = TRUE, title = "mtcars")\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,当我将相同的代码移动到 VSCode 时,它​​给了我一个错误,说

\n\n
Error in htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html",  : \n  Saving a widget with selfcontained = TRUE requires pandoc. For details see:\nhttps://github.com/rstudio/rmarkdown/blob/master/PANDOC.md\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怀疑 VSCode 无法识别 的路径pandoc,因为我输入find_pandocVScode 来查找版本和目录,显示

\n\n
> rmarkdown::find_pandoc()\n$version\n[1] \'0\'\n\n$dir\nNULL\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,在 Rstudio 中它显示

\n\n
> find_pandoc()\n$version\n[1] \xe2\x80\x982.7.2\xe2\x80\x99\n\n$dir\n[1] "C:/Program Files/RStudio/bin/pandoc"\n
Run Code Online (Sandbox Code Playgroud)\n

sla*_*hut 5

为了了解这是怎么回事,我们先看一下 的源代码rmarkdown:::find_pandoc()。我们可以在那里找到以下几行:

sys_pandoc <- find_program("pandoc")
sources <- c(Sys.getenv("RSTUDIO_PANDOC"), if (nzchar(sys_pandoc)) dirname(sys_pandoc))
Run Code Online (Sandbox Code Playgroud)

sources然后用于获取pandoc路径。我怀疑在你的情况下RSTUDIO_PANDOC没有设置,所以rmarkdown:::find_pandoc()依赖于find_program("pandoc")找到路径。如果你反过来看它的源码,你会发现路径是通过运行来确定的Sys.which,相当于从shell中提取路径:

报告由 shell 执行的可执行文件(包括可执行脚本)的完整路径名的系统命令...

话虽这么说,您需要将 pandoc 的路径添加到PATH系统上的环境变量中。