4

我正在使用 R、MySQL、Sweave 和 LaTeX 来生成查询数据库的报告。我的问题是,由于 R 代码嵌入在 .Rnw 文件中,我似乎无法控制多行格式。

我嵌入了以下 R 代码:

library(RMySQL)

con <- dbConnect(MySQL(), 
user='test_user', 
dbname='sakila', 
host='localhost', 
password='password')

data <- dbReadTable(con, 'film_list')

query <-('
SELECT category, count(FID) AS Number 
FROM film_list 
GROUP by category')

Cat <- dbGetQuery(con, query)

Cat

然后我在 Sweave 生成​​的 PDF 中得到以下输出:

> library(RMySQL)
> con <- dbConnect(MySQL(), user = "test_user", dbname = "sakila",
+ host = "localhost", password = "password")
> data <- dbReadTable(con, "film_list")
> query <- ("\nSELECT category, count(FID) AS Number \nFROM film_list \nGROUP by category")
> Cat <- dbGetQuery(con, query)
> Cat

结果是 SELECT 查询在页面外运行。

有没有办法让 LaTeX 输出呈现 SQL 查询,因为它是编写的?

4

2 回答 2

9

keep.source选项添加到代码块选项并将其设置为true

<<foo,keep.source=TRUE>>=
query <- '
SELECT category, count(FID) AS Number
FROM film_list
GROUP by category'
@

在乳胶源中对此进行了处理:

\begin{Schunk}
\begin{Sinput}
> query <- '
+ SELECT category, count(FID) AS Number
+ FROM film_list
+ GROUP by category'
\end{Sinput}
\end{Schunk}

如果标准 Sweave 包装不符合您的喜好,您可以自由调整源代码以适应最终 PDF 中的需要。您可以将问题中的所有代码包含在块中,我只是使用了 SQL 位,因为这是您遇到的问题。

您不需要对分配给的字符串进行(and)舍入query

于 2010-11-02T19:16:12.747 回答
4

一个流行的技巧是有两个 Sweave 块:第一个具有 echo=TRUE,eval=FALSE 并且仅用于显示命令,然后第二个具有 echo=FALSE,eval=TRUE 实际运行查询。Sweave 驱动程序可以发挥更高级的技巧。

然后,您可以使用其他技巧来漂亮地打印实际查询结果。

于 2010-11-02T18:22:44.840 回答