编织任何Rmd文件时,evaluate_call(...)中的R markdown错误

时间:2016-10-22 23:51:06

标签: r knitr r-markdown

我再也无法将我的任何Rmd文件编织为PDF或Html。每次都是相同的错误消息:

  

第9行在evaluate_call中出错(expr,解析为$ src [[i]],envir = envir,   enclos = enclos,:unused参数(include_timing = include_timing)   通话:... call_block - > block_exec - > in_dir - >评估 - >   evalute_call执行暂停

第9行是打开新的R降价文件时自动生成的行:

{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)

我尝试删除它,将TRUE更改为FALSE,然后删除部分内容。它给了我在同一行停止的相同错误消息。

5 个答案:

答案 0 :(得分:9)

如果您仍然收到相同的错误,请使用上面相同的链接答案来更新evaluate包。当我更新时,错误停止了。我目前正在运行3.3.1。

Yihui在knitr FAQ1中提供了指导:https://github.com/yihui/knitr/blob/master/FAQ.md

答案 1 :(得分:1)

当我尝试将knitr更新为版本1.13或1.14时,我遇到了这个问题。如果我尝试用R版本3.2.x或3.3.x编织,我会得到同样的错误。我建议使用以下内容恢复到knitr版本1.12。我没有得到1.12的上述错误。

packageurl <- "http://cran.r-project.org/src/contrib/Archive/knitr/knitr_1.12.tar.gz" install.packages(packageurl, repos=NULL, type="source")

取自这个答案:getting a parser_all error in R when using knitr for converting a basic Rmd file into HTML。仍不确定问题是什么。

答案 2 :(得分:1)

我遇到了这个问题,经过几个小时与我的代码争论后,我刚刚更新了R中的所有软件包并修复了它!很高兴。即使使用r studio自动创建的r markdown测试文档,我也遇到了问题,但这解决了它。

答案 3 :(得分:0)

您可以尝试按照https://github.com/yihui/knitr中的建议从XRAN安装开发版本。

# update all existing packages first
update.packages(ask = FALSE, repos = 'http://cran.rstudio.org')
install.packages('knitr', repos = c('http://yihui.name/xran', 'http://cran.rstudio.org'))

我遇到了同样的问题,并尝试了几种方法。

  1. 将knitr版本降级为1.12。它有效,但 R Notebook
  2. 不支持该功能
  3. 更新评估包。不幸的是它没有 解决这个问题。
  4. 重新安装软件(Rstudio,pandoc,MikTex)。 无法正常工作
  5. 安装如上所述的开发版本。 它终于有效了!
  6. 顺便说一句。这是我的环境信息。

    R version 3.3.1 (2016-06-21)
    Platform: x86_64-w64-mingw32/x64 (64-bit)
    Running under: Windows >= 8 x64 (build 9200)
    Rstudio Version 1.0.44
    

    到目前为止,问题的根本原因尚不清楚。我为 R Notebook 试用版安装了Rstudio的预览版。它在开始时运作良好。但是我安装了 MikTex 用于PDF输出。问题出来了。

答案 4 :(得分:0)

这个问题是由于knitr将其默认的“evaluate”挂钩定义为:

.default.hooks = list(
  # ...
  evaluate = evaluate::evaluate
  # ...
)

首次安装knitr包,而evaluate-1.0(或更高版本)可用。这些版本evaluate::evaluate采用可选的include_timing参数。 knitr钩子代码在安装+编译时有效地缓存了evaluate::evaluate的实现。

稍后,系统上会安装evaluate-0.9(或更早版本)。您无法再编织文档,因为knitr仍在使用其缓存的evaluate-0.10版evaluate::evaluate - 它试图将include_timing参数传递给evaluate::evaluate_call。这是evaluate::evaluate_call的evaluate-0.9版本,并且不期望include_timing参数。 KABOOM。错误。

此处已报告(现已修复):https://github.com/yihui/knitr/issues/1441

如果您不想更新knitr,您可以选择几种解决方法:

  1. evaluate::evaluate的正确版本注册为knitr“evaluate”hook:

    knitr::knit_hooks$set(evaluate = evaluate::evaluate)
    
  2. 强制重新安装您正在使用的任何版本的knitr(使用devtools::install_github或其他方法)。