今天遇到了一个奇怪的问题,各种谷歌百度都没有找到对应的方案,囧。
具体问题描述
利用RStudio写好的.rmd文档,使用RStudio内置的knit按钮,或者在RStudio内部调用markdown::render()都可以正常生成结果HTML或者PDF文件。但当我将rmarkdown::render()写入一个总的R脚本(假设为test.R),然后在命令行使用
Rscript test.R
却没办法生成HTML或PDF结果,最奇怪的是运行结果没有任何error或者warning,通过插入debug点看到脚本确实是在运行到rmarkdown::render()的语句时停止了,但没有信息输出。
全网都没找到解决方案,最后自己好好想了一下,终于找到问题。
原因及解决方法
我们都知道R和RStudio是分开安装的,但我们不知道的是R安装的一般只有R的核心组件(R,Rscript等),而RStudio还会安装很多额外的功能程序,这一点从R/bin和RStudio/bin中的内容就可以很清楚地看到。而rmarkdown结果文件生成依赖一个程序,叫做pandoc,而这个pandoc只有在RStudio中随附安装,在R里面是没有的,这也就是为什么rmarkdown结果在RStudio中能够顺利生成,而利用R调用一样的语句确没有反应。
将pandoc可执行文件复制到R/bin下,或者将pandoc可执行文件加入系统环境变量,即可解决问题。
网友评论