2016-02-20 77 views
0

我正在使用knitr,並且我想在R markdown中呈現文本塊,就好像它們是註釋輸出一樣。我如何獲得knitr將左對齊的註釋符號添加到我的文本中?如何使用R markdown將未註釋文本塊轉換爲呈現/顯示爲註釋文本的文本

也就是說,我有很多的文字象下面這樣,這是我與R工作室R命令控制檯複製粘貼,在我.Rmd文件:

Fixed effects: 
          Estimate Std. Error t value 
(Intercept)    723.793  27.472 26.346 
GroupCond.Treatmenthomo  6.145  4.792 1.282 
GroupCond.Treatmenthetero 20.739  4.796 4.324 

而且我想knitr以使其像這樣,在一個註釋代碼塊的風格:

## Fixed effects: 
##       Estimate Std. Error t value 
## (Intercept)    723.793  27.472 26.346 
## GroupCond.Treatmenthomo  6.145  4.792 1.282 
## GroupCond.Treatmenthetero 20.739  4.796 4.324 

有沒有辦法做到這一點?

什麼我真的想在這裏做的是顯示在建模過程中的步驟,而無需實際負擔我.Rmd文件,這將需要將數據加載到.Rmd環境和耗時的模型擬合命令的執行步驟。而且,在展示步驟時,我想明確區分建模命令和模型輸出。

+0

如果您使用的是RStudio,請嘗試突出顯示有問題的文本,然後選擇Ctrl + Shift + C –

+0

謝謝。我在「代碼」菜單項下看到了這個選項,但是這對我的'.Rmd'文檔沒有任何作用,儘管它爲'.R'文件中的行添加單個註釋標記('#')。 – clarpaul

+0

代碼塊中的文本是? –

回答

0

試圖逃避你的降價文字..記住結束每行有兩個空格強制換行

\## Fixed effects: 
\##       Estimate Std. Error t value 
\## (Intercept)    723.793  27.472 26.346 
\## GroupCond.Treatmenthomo  6.145  4.792 1.282 
\## GroupCond.Treatmenthetero 20.739  4.796 4.324 
0

總結,問題是關於沒有實際計算結果,但有輸出(代碼和結果)看起來像結果在文件中計算。

假設我們有下面的代碼生成一個data.frame

dat <- data.frame(ID = 1:10, char = LETTERS[1:10]) 

假設我們不想與生成dat了「混亂的代碼」混淆讀者。但是我們想要證明有一個命令summary(dat),我們希望包含它的輸出。輸出應該看起來像我們實際執行命令。

我提出了三種不同的解決方案。我把它留給讀者去演示片段以便看到輸出結果。

執行一切,隱藏着怎樣的困惑

簡易版:

```{r, echo = FALSE} 
dat <- data.frame(ID = 1:10, char = LETTERS[1:10]) 
``` 

```{r} 
summary(dat) 
``` 

高級版本(相同的輸出!):

```{r, echo = 2} 
dat <- data.frame(ID = 1:10, char = LETTERS[1:10]) 
summary(dat) 
``` 

說明:echo見文檔。

  • 親:可重現。
  • Con:如果加載/生成數據的執行時間是計算密集型的(如問題中所建議的)。請注意,在重複執行的情況下,knitr的cache可能是一種解決方法。

裝入數據

在正常R對話,生成/計算該將被打印並使用save將它們保存到文件中的對象。在該文件中,load該文件(在單獨的塊中或使用上面的echo技巧)。

```{r, echo = 2} 
load("dat.RData") 
summary(dat) 
``` 
  • 臨:dat無關緊要的文件。
  • Con:需要提前創建文件;危害重現性。

假裝執行

問題建議表明,從控制檯複製的,如果它是文本輸出。

```{r, eval = FALSE} 
summary(dat) 
``` 

```{r, echo = FALSE} 
cat("  ID    char 
Min. : 1.00 A  :1 
1st Qu.: 3.25 B  :1 
Median : 5.50 C  :1 
Mean : 5.50 D  :1 
3rd Qu.: 7.75 E  :1 
Max. :10.00 F  :1 
       (Other):4 ") 
``` 
  • 臨:沒有(除了cat)需要在文檔中進行exectured(如果你想打電話給這個優勢)。
  • 肯特:不可複製。在代碼改變時很容易忘記更新輸出。