2016-11-05 25 views
3

以下文檔運行sql並顯示結果。我不想讓任何輸出顯示出來,或者不運行該塊,或者隱藏輸出。`knitr`能否抑制sql塊中的執行或輸出?

有沒有辦法做到這一點?

--- 
output: html_document 
--- 

## Hide SQL Output 

First, set up a temporary database: 

```{r} 
library(RSQLite) 
conn <- dbConnect(SQLite(), tempfile()) 
df <- data.frame(value = runif(1)) 
dbWriteTable(conn, "TestTable", df) 
``` 

Now show a query, but try not to run it, and try 
to hide the output. Neither works: it runs, and 
displays the table. 

```{sql connection = conn,results="hide",eval=FALSE} 
SELECT * FROM TestTable; 
``` 

我得到這樣的輸出: enter image description here

回答

2

我找到了一個解決方法。如果我使用mysql引擎,而不是sql引擎,那麼至少eval = FALSE作品:

```{mysql eval=FALSE} 
SELECT * FROM TestTable; 
``` 

將顯示語法高亮顯示的代碼,但不執行任何東西。

我不知道是否也支持results="hide",因爲我沒有安裝mysql。

+1

如果您只想顯示SQL代碼,您可以使用''''sql'而不是'''{sql}'(StackOverflow不支持文字反引號,所以用單引號替換這裏的反引號)。只有後者被視爲R代碼塊。前者是Markdown中的普通代碼塊。 –

+0

謝謝,我不知道。它在這裏不起作用(因爲我想在一個頁面上顯示代碼,並執行它而不顯示下一個,而不重複所有的代碼),但是在很多情況下會解決類似的問題。順便說一句,對於其他人:Yihui只是接受了一個拉取請求,將'eval = FALSE'和'results =「hide」'添加到sql引擎的支持選項。 – user2554330

+0

我明白了。這很有道理。歡迎您接受您自己的答案。 –