2017-09-05 79 views
5

我正在編輯一個具有大量R代碼塊的R markdown文件(.Rmd),將這些代碼塊的組移動到「子」文檔中以簡化重新排列節(如果沒有其他)。當我將部分轉換爲子文檔時,我想測試新的子文檔而不運行其他的塊和其他子項。但是,當我使用註釋掉這些部分時,R塊仍然運行(但RStudio使這些部分「看起來」好像被註釋掉了一樣)。如何在R markdown中註釋掉R代碼塊?

如果我消除了前後的「``」s(即代碼塊的指示符),則註釋可以正常工作。然而,正如我所說,我有很多代碼塊,並且會更方便。

那麼,我如何評論R代碼塊,以便它們不會運行?

+2

我不確定這是否是您要查找的內容,但是如果您從R代碼塊之下(至少)一行(至少)突出顯示R代碼塊之上(至少)一行,然後鍵入Command-Shift-C,RStudio將在塊上放置html註釋標籤。 – eipi10

+1

我應該提到:「Command-Shift-C」適用於OSX。在Windows上,我認爲它是ctrl-shift-C(雖然這也適用於OSX)。 – eipi10

+0

這就是我一直在尋找的!我使用就像它支持多行註釋(如java中的\ ** ... * \),但似乎並非如此。然而,RStudio中的Command-Shift-C(在OSX上)將該塊變成一組單行註釋 - 完美地工作。謝謝! –

回答

4

在Rmarkdown文檔中,我們可以應用某些選項,以每個R代碼塊,其確定是否在代碼內將運行,打印,顯示錯誤消息等

成具有特定的代碼塊不能運行,使用方法:

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

成具有特定的代碼塊不運行或打印到所創建的文檔,使用:

```{r cars, eval=FALSE, echo=FALSE} 
summary(cars) 
``` 

「TRUE」被用於相反的作用,並且默認。

如果您有很多代碼塊需要註釋掉,您可以從@ eipi10中獲取建議(謝謝),並使用find/replace選擇正則表達式選項。因此,查找將是「(```{r。*)」,並且替換爲「\ 1,eval = FALSE,echo = FALSE}」(不帶雙引號)。

+0

謝謝,但只是註釋掉塊要快得多。 –

+0

這取決於您一次嘗試註釋掉多少個連續的塊,而您並未指定這些塊。除此之外,對於一般用例來說,這個答案仍然是最好的解決方案,對於那些可能正在尋找這個問題的其他人來說。 – www

+1

您可以使用帶查找/替換工具的'regex'選項更快地實現此方法。查找模式是'('''{r。*)}',替換模式是'\ 1,eval = FALSE,echo = FALSE}'。 – eipi10

6

在RStudio,如果從(至少)一個行之上的R代碼塊到(至少)將R代碼塊的最後一行,然後鍵入CTRL-移-C 亮點(在OSX或Windows中)或命令轉換C(僅限OSX)時,RStudio將在塊上放置html註釋標籤。

例如:

```{r cars} 
summary(cars) 
plot(pressure) 
``` 

強調這一點,之後輸入CTRL移C,這成爲:

<!-- ```{r cars} --> 
<!-- summary(cars) --> 
<!-- plot(pressure) --> 
<!-- ``` --> 

要選擇註釋掉多塊,你可以使用RStudio查找/替換選中正則表達式選項的工具。它需要兩個替換步驟(它可能只需一步完成,但我不確定如何在RStudio的多行中執行正則表達式捕獲)。

步驟1:評論出一個或多個塊的第一行:

查找:(```{r.*)
替換:<!--\1

步驟2:評論出的一個或多個的最後一行大塊:

尋找:(```)$
替換:\1-->


1您必須在高亮塊上面行。否則,RStudio會將R註釋標記(#)置於塊的每一行的開始處,並且註釋行將在輸出文檔中顯示爲純文本。

+0

我沒有意識到這是R Studio的一項功能。每次我試圖評論一個塊時,我總是得到'#'。如果您至少突出顯示塊上方的行,可能會有助於強調您的答案,即只有_only_有效。 (在R Studio 1.0.143中,從上面的一塊到塊的結尾突出顯示,並且從塊的開始到結尾下面的一行高亮顯示'#'註釋符號)。 – Benjamin

+0

你做到了。我想我已經記住了這句話的那部分內容。 – Benjamin

+0

我喜歡它。謝謝。 – Benjamin