这个问题是我尝试通过knitr和rmarkdown R包从R Markdown文档创建可重现报告的次要问题。虽然似乎在RStudio中可以自动进行.Rmd => HTML转换(Knit HTML按钮),但我在RStudio之外尝试做同样的事情(Rscript -e 'library(rmarkdown); render(“knitr-example-slides-1.Rmd”)')失败了,因为根据消息,在我的系统上缺少pandoc。这很可能是错误的,因为RStudio以某种方式执行了转换。因此,这很可能是一个访问和/或路径问题。
没有关于RStudio维护pandoc的位置和访问细节的知识,因此我决定自己安装pandoc。不幸的是,由于Ubuntu的trusty存储库(14.04LTS)中当前版本的pandoc为1.12.2.1,所以sudo apt-get install pandoc并不是很有帮助。根据rmarkdown的消息,需要版本1.12.3或更高版本。 "没什么大不了的",我想,并按照如果存储库中版本太旧则安装pandoc的说明进行操作(http://johnmacfarlane.net/pandoc/installing.html)。这需要安装Haskell平台,它非常庞大且输出相当冗长。经过一段时间,我最终收到了以下失败消息:
没有关于RStudio维护pandoc的位置和访问细节的知识,因此我决定自己安装pandoc。不幸的是,由于Ubuntu的trusty存储库(14.04LTS)中当前版本的pandoc为1.12.2.1,所以sudo apt-get install pandoc并不是很有帮助。根据rmarkdown的消息,需要版本1.12.3或更高版本。 "没什么大不了的",我想,并按照如果存储库中版本太旧则安装pandoc的说明进行操作(http://johnmacfarlane.net/pandoc/installing.html)。这需要安装Haskell平台,它非常庞大且输出相当冗长。经过一段时间,我最终收到了以下失败消息:
[ 6 of 57] Compiling Text.Pandoc.Readers.TeXMath ( src/Text/Pandoc/Readers/TeXMath.hs, dist/build/Text/Pandoc/Readers/TeXMath.o )
src/Text/Pandoc/Readers/TeXMath.hs:30:38:
Ambiguous occurrence `readTeXMath'
It could refer to either `Text.Pandoc.Readers.TeXMath.readTeXMath',
defined at src/Text/Pandoc/Readers/TeXMath.hs:56:1
or `Text.TeXMath.readTeXMath',
imported from `Text.TeXMath' at src/Text/Pandoc/Readers/TeXMath.hs:33:1-19
(and originally defined in `Text.TeXMath.Parser')
Failed to install pandoc-1.12.4.2
cabal: Error: some packages failed to install:
pandoc-1.12.4.2 failed during the building phase. The exception was:
ExitFailure 1
pandoc-citeproc-0.3.1 depends on pandoc-1.12.4.2 which failed to install.
首先,我不确定如何修复它。其次,我非常怀疑使用rmarkdown
和pandoc
生成可重复报告的方法应该有更简单的方式。 期待您的建议!
更新(参见评论):
Rscript -e 'library(rmarkdown); render("knitr-example-slides-1.Rmd")'
processing file: knitr-example-slides-1.Rmd
|....... | 11%
ordinary text without R code
|.............. | 22%
label: setup (with options)
List of 1
$ include: logi FALSE
Quitting from lines 6-8 (knitr-example-slides-1.Rmd)
Error in eval(expr, envir, enclos) : object 'opts_chunk' not found
Calls: render ... handle -> withCallingHandlers -> withVisible -> eval -> eval
Execution halted
markdown
对pandoc
的版本要求是什么。但是,你可以尝试为你的平台安装二进制包,看看是否可行。如果不行,那么我看有两个备选方案:1)安装RStudio
;2)从源代码构建pandoc
。话虽如此,我相信当前的pandoc
二进制包应该足够使用,除非你需要一些最新的更新。祝你好运! - Aleksandr Blekh