R:Knitr为SQL-chunk

时间:2017-07-24 11:49:44

标签: sql r eval knitr

我想编写我的R-markdown的输出,其中包括几个SQL-chunk。但是,如果我开始编织,我会收到错误:

Line 65     Error in eval(expr, envir, enclos) : object 'pp_dataset' not found Calls: <Anonymous> ... process_group.block -> call_block -> eval_lang -> eval Execution halted

我不知道发生了什么,因为如果我只是运行这个块(从第64行开始),那么它可以正常工作。

从第64行开始的块看起来如下:

```{sql, connection=con, output.var=pp_dataset, error=TRUE, echo=FALSE, include=TRUE}
SELECT
(...)
order by 1,2
```

我尝试了几个编织选项,例如error = TRUE / FALSE,echo = TRUE / FALSE和include = TRUE / FALSE但是这不起作用。 谁知道什么是错的?

2 个答案:

答案 0 :(得分:2)

看起来您需要在rchunk选项中引用数据集名称:

```{sql, connection=con, output.var="pp_dataset", error=TRUE, echo=FALSE, 
include=TRUE}
SELECT
(...)
order by 1,2
```

来源:http://rmarkdown.rstudio.com/authoring_knitr_engines.html#sql 我也回答了post中的问题。我不确定协议是否相同。

答案 1 :(得分:1)

在呈现文档时,Rmarkdown无法访问您的全局环境。因此,您应该确保您要使用的所有变量都在Rmarkdown文档中定义,例如在最初的一块:

```{r setup, include=FALSE, warning=FALSE, message=FALSE}
(...)
```

或者您应该输入

render("yourfile.Rmd")

而不是按下编织按钮。在这种情况下,文档可以访问您的全局环境变量。在这种情况下,我猜'con'连接在您的全局环境中,而在渲染时找不到。希望这有帮助!

  

编辑:我能够使用您的示例代码重现错误:

如果没有首先初始化SQL语句的输出变量,我就无法运行您的代码。在您的top-chunck中(例如,在setwd(mydirectory)行下方,请尝试:

pp_dataset <- NULL

希望这也能为您解决问题。