【问题标题】:Knitting returns parse error针织返回解析错误
【发布时间】:2015-09-28 09:24:21
【问题描述】:

在尝试编写 PDF 时。我正在调用一个脚本,该脚本应该通过调用块返回两个 ggplot:

```{r, echo=FALSE}

read_chunk('Script.R')

```r

但是收到错误

processing file: Preview-24a46368403c.Rmd

 Quitting from lines 9-12 (Preview-24a46368403c.Rmd)  Error in
 parse(text = x, srcfile = src) :    attempt to use zero-length
 variable name Calls: <Anonymous> ... <Anonymous> -> parse_all ->
 parse_all.character -> parse Execution halted

脚本自行运行并返回两个图,但在编织时不会返回它们。

同样尝试使用source() 但是遇到了类似的错误

 Quitting from lines 7-10 (Preview-24a459ca4c1.Rmd)  Error in
 file(filename, "r", encoding = encoding) :    cannot open the
 connection Calls: <Anonymous> ... withCallingHandlers -> withVisible
 -> eval -> eval -> source -> file Execution halted

【问题讨论】:

    标签: r rstudio


    【解决方案1】:

    虽然这似乎不是您的解决方案,但如果块未正确结束,则会出现完全相同的错误消息。

    我遇到了这个错误,并追踪到以 `` 而不是 ``` 结尾的块。更正块的语法解决了我遇到的与您相同的错误消息的问题。

    【讨论】:

    • 我猜这是这个错误最常见的原因。这对我有用。
    【解决方案2】:

    您确定 knitr 是从您认为的目录运行的吗?似乎找不到文件。

    • 使用绝对路径,如果这样可以解决问题,您就找到了问题
    • 一旦你这样做了,你可以使用opts_knit$set(root.dir = "...")——如果你想维护它(cwd),不要使用setwd(.)

    Knitr 的默认目录是.Rmd 文件本身的目录。

    【讨论】:

    • 我在这里添加了绝对路径:source("c:/users/me/documents/Script.R") opts_knit$set(root.dir = "c:/users/me/documents/") 但我仍然得到Quitting from lines 7-11 (Preview-24a43ec36ef0.Rmd) Error in file(file, ifelse(append, "a", "w")) : cannot open the connection Calls: &lt;Anonymous&gt; ... write.csv -&gt; eval.parent -&gt; eval -&gt; eval -&gt; write.table -&gt; file Execution halted1
    • 知道了。您是否尝试过直接将 Script.R 的内容复制到 .Rmd 文件中?如果你有,并且可行,那么它肯定是 read_chunk 期望的和你传递的问题,但为了调试它,我们需要 Script.R 的内容
    【解决方案3】:

    这可能与划分代码块的三重反引号末尾的“r”有关。三重反引号后应该什么都没有,但我认为问题在于字母是“r”。

    问题源于 R markdown 将以 r 开头的反引号语句处理为 inline code,这意味着它实际上运行反引号之间的任何内容。

    我在使用此语句在 Rmd 中编写问题集时遇到了类似的问题,该语句的反引号文本旨在为等宽但不作为内联代码运行:

    使用sapplymap 计算故障率超过r &lt;- seq(.05, .5, .025) 的概率。

    当我编织文档时,我收到了不透明的错误消息,说我使用 &lt;- 的分配不正确。这是因为 r &lt;- seq(.05, .5, .025) 实际上被处理为 &lt;- seq(.05, .5, .025) 的 R 内联代码,而不是仅在等宽中显示反引号语句...因此不正确的分配错误。我通过将变量名从 r 更改为 rate 来修复我的错误。

    您问题中错误消息的实际文本可能是指代码块后面的任何内容,因为编织过程可能试图将其作为代码运行。在这种情况下,只需在代码块末尾删除那个杂散的r 即可修复错误。

    【讨论】:

      【解决方案4】:

      你应该使用以下类似的语法,我有同样的问题,但已经解决了:

          ```{r views}
      bank.df <- read.csv("C:/Users/User/Desktop/Banks.csv", header = TRUE) #load data
      dim(bank.df) # to find dimension of data frame
      head(bank.df) # show first six rows
      ```
      

      ``` 必须在行尾。

      【讨论】:

        【解决方案5】:

        在我的情况下,我以四个昏迷结束了代码,而不是三个。检查此项,如果您也完成了四个昏迷,请尝试删除其中一个。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 2021-04-23
          相关资源
          最近更新 更多