knitr从1.2更新到1.4错误:从行退出

knitr从1.2更新到1.4错误:从行退出,r,knitr,R,Knitr,我最近将knitr更新为1.4,从那以后我的.Rnw文件就无法编译了。 文档内容丰富(7章,随child=“”)一起提供)。 现在,在最近的knitr版本中,我收到一条错误消息: Quitting from lines 131-792 (/DATEN/anna/tex/CoSta/chapter1.Rnw) Quitting from lines 817-826 (/DATEN/anna/tex/CoSta/chapter1.Rnw) Fehler in if (ev

我最近将knitr更新为1.4,从那以后我的.Rnw文件就无法编译了。 文档内容丰富(7章,随child=“”)一起提供)。 现在,在最近的knitr版本中,我收到一条错误消息:

    Quitting from lines 131-792 (/DATEN/anna/tex/CoSta/chapter1.Rnw) 
    Quitting from lines 817-826 (/DATEN/anna/tex/CoSta/chapter1.Rnw) 
    Fehler in if (eval) { : 
    Argument kann nicht als logischer Wert interpretiert werden
(最后两行表示knitr正在查找逻辑文件,但找不到它。 在第131行和第817行,两个数字结束。分别编译这些剪报将起作用。 我不知道如何解决这个问题。 提前感谢您的任何提示,以解决我的问题

这是sessionInfo()

按照许的建议,我将每一章分别与 针织(“第1章Rnw”) 以此类推。不会出现错误消息,并且会创建单独的tex文件。为了提供更多信息,我显示了部分代码。 有一个主文档,其中设置了多个选项

     <<options-setting,echo=FALSE>>=
     showthis <- FALSE
     evalthis <- FALSE
     evalchapter <- TRUE
     opts_chunk$set(comment=NA, fig.width=6, fig.height=4)
     @
=

显示这这与knitr 1.3的变化有关,并在以下文件中提到:

将参数
options
添加到
knit_child()
以设置子文档的全局块选项;如果父块调用子文档(通过
child
选项),父块的块选项将用作子文档的全局选项,例如,对于
=
,图路径前缀将是
bar.Rnw
中的
figure/foo-
;有关应用程序,请参阅


这导致了内联R代码的错误。在您的案例中,chunk选项
eval=evalchapter
在用于评估内联代码时未进行评估。我已修复了中的错误。

这与knitr 1.3中的更改有关,并在中提到:

将参数
options
添加到
knit_child()
以设置子文档的全局块选项;如果父块调用子文档(通过
child
选项),父块的块选项将用作子文档的全局选项,例如,对于
=
,图路径前缀将是
bar.Rnw
中的
figure/foo-
;有关应用程序,请参阅


这导致了内联R代码的错误。在您的例子中,chunk选项
eval=evalchapter
在用于计算内联代码时未进行计算。我已修复了中的错误。

我提出了上述问题。让我做以下评论:如果我在主文档中插入子文件,则错误消失。因此,above问题是使用子文档时出现的问题。这听起来很难诊断;您可以执行的第一步是在交互式R会话中运行
library(knitr);knit('Chapter1.Rnw')
,当出现错误时,运行
traceback()
并将输出粘贴到此处我按照您的建议进行了操作。单独编织每个章节不会显示错误消息。成功生成了单独的.tex文件。
knit('main.Rnw')
traceback()
?我几天前已经更新了这个问题,但没有留下任何注释。因此,上面有一个带有子文件的“最小”Rnw文件,它会复制错误。这是关于条件子文件中的Sexpr我在上面提出的问题。让我做以下注释:如果我在主文档中插入子文件,则错误消失因此,上面的问题是使用子文档的问题。这听起来很难诊断;您可以执行的第一步是在交互式R会话中运行
library(knitr);knit('Chapter1.Rnw')
,当错误发生时,运行
traceback()
并将输出粘贴到此处我按照您的建议进行了操作。单独编织每个章节不会显示错误消息。成功生成了单独的.tex文件。
knit('main.Rnw')
traceback()
?我几天前已经更新了这个问题,但没有留下任何评论。因此,上面有一个带有child的“最小”Rnw文件,它复制了错误。这是关于条件子文件中的Sexpr谢谢你的努力。现在,上面的代码几乎是正确的。出于某种原因,没有在这个问题上设置数学环境数字,因此tex代码不正确。这可以在替换
\Sexpr时看到{(t我认为我现在必须在每个
\Sexpr
周围放置
$\times$
,对吗?以前,这是在没有进一步通知的情况下完成的。@user2694363感谢您的报告!新问题已在Github上的knitr 1.4.7中解决。谢谢您的努力。现在,上面的代码几乎是“knitr”正确的。出于某种原因,没有任何数学错误。)nEnvironment被放置在数字周围,因此tex代码不正确。这可以在替换
\Sexpr时看到{(t我想我现在必须在每个
\Sexpr
周围放置
$\times$
,对吗?之前,这是在不另行通知的情况下完成的。@user2694363感谢您的报告!新问题已在Github上的knitr 1.4.7中解决
     <<options-setting,echo=FALSE>>=
     showthis <- FALSE
     evalthis <- FALSE
     evalchapter <- TRUE
     opts_chunk$set(comment=NA, fig.width=6, fig.height=4)
     @
     <<child-chapter1, child='chapter1.Rnw', eval=evalchapter>>=
     @
     \begin{figure}[ht]
       \centering
      <<wuerfel-simulation,echo=showthis,fig.height=5>>=
      data.sample6 <- sample(1:6,repl=TRUE,100)
      table(data.sample6)
      barplot(table(data.sample6)/100,col=5,main="Haeufigkeiten beim Wuerfeln")
      @ 
      \caption{Visualisierung beim W"urfeln. 100 Versuche.}
      \label{fig:muent-vis}
      \end{figure}
       << zeiten, echo=showthis,eval=evalthis>>=
       zeiten <- c(17,16,20,24,22,15,21,15,17,22)
       max(zeiten)
       mean(zeiten)
       zeiten[4] <- 18; zeiten
       mean(zeiten)
       sum(zeiten > 20)
       @
    \documentclass{article}
    \begin{document}
    <<options-setting,echo=FALSE>>=
    evalchapter <- TRUE
    @
    <<test,child="test-child.Rnw", eval=evalchapter>>=
    @ 
    \end{document}
     <<no-sexpr>>=
     t <- 2:4
     @ 
     text \Sexpr{(t <- 2:4)}