我使用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查询?
答案 0 :(得分: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位,因为这是您遇到问题的原因。
您不需要将(
和)
围绕分配给query
的字符串。
答案 1 :(得分:4)
一个流行的技巧是有两个Sweave块:第一个有echo = TRUE,eval = FALSE,仅用于显示命令,然后第二个有echo = FALSE,eval = TRUE实际运行查询。 Sweave司机可以使用更高级的技巧。
然后,您可以使用其他技巧来打印实际的查询结果。