1

我有一个 R 笔记本,我在其中使用 sql 块从数据库中读取数据,然后将其分配给数据框。然后我想在 R 笔记本中的 R 块中使用它,所以我在 sql 块中使用 output.vars 选项。

当我全部运行然后预览它时它工作得很好但是当我编织它时我得到错误:“eval(expr,envir,enclos)中的错误:找不到对象'x'”。

以下是一些将重现此错误的简单代码:

---
title: "R Notebook"
output:
  html_notebook: default
  html_document: default
---

```{r setup}
library(DBI)
library(RSQLite)
db = dbConnect(SQLite(), dbname = "C:/R/chinook.db")
```

```{sql connection = db, output.vars = 'x'}
SELECT * FROM artists
```

```{r}
x[1:10,]
```

我在用:

  • R 版本 3.4.0 (2017-04-21)
  • 平台:i386-w64-mingw32/i386(32位)
  • 运行于:Windows 7 x64(内部版本 7601)Service Pack 1
  • RStudio 1.0.143
  • DBI_0.6-1
  • knitr_1.15.1

该示例使用来自 sqlitetutorial.net http://www.sqlitetutorial.net/download/sqlite-sample-database/?wpdmdl=94的 SQLite 示例数据库。

我也尝试过不同类型的数据库,但都没有成功。

4

2 回答 2

1

我不确定你中间的语法块会起作用。你为什么不喜欢:

```{r}
library(DBI)
library(RSQLite)
db <- dbConnect(SQLite(), dbname = "C:/R/chinook.db")
x <- dbGetQuery(db, 'SELECT * FROM artists')

```

```{r}
x[1:10,]
```
于 2017-05-06T13:54:43.997 回答
1

我认为您必须更改output.varsoutput.var

```{sql connection = db, output.var = 'x'}
SELECT * FROM artists
```

它对我有用。

于 2017-05-06T16:26:44.150 回答