2010-11-02 23 views
4

我正在使用R,MySQL,Sweave和LaTeX來生成查詢數據庫的報告。我的問題是,因爲R代碼被嵌入到.Rnw文件中,我似乎沒有控制多行格式。如何在Sweave中使用SQL查詢格式化R源代碼,而不刪除我的換行符?

我嵌入下列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

你在開始Sweave塊的'<<>> ='中放置了什麼選項? – Sharpie 2010-11-02 22:14:40

回答

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} 

您可以自由調整的源代碼以滿足您在最終PDF中的需求,如果標準Sweave包裝不符合您的喜好。你可以在你的問題中包含所有的代碼塊,我只是使用了SQL位,因爲這是你遇到的問題。

您不需要將()四捨五入您分配給query的字符串。

+0

好人。謝謝。 – John 2010-11-02 22:30:48

4

一個流行的技巧是有兩個Sweave塊:第一個具有echo = TRUE,eval = FALSE,僅用於顯示命令,然後第二個具有echo = FALSE,eval = TRUE,它實際上運行查詢。更高級的技巧可以和Sweave司機一起玩。

然後,您可以執行其他技巧來漂亮地打印實際查詢結果。

+0

謝謝,我使用的gEdit運行sweave作爲一個功能,沒有額外的選項。我沒有意識到我可以將它們添加到塊中。 – John 2010-11-02 22:30:30