2016-04-25 26 views
2

我的R腳本創建了這些矩陣的一系列矩陣和箱形圖。其中一個矩陣可能是空的。執行空矩陣的boxplot會給出錯誤。這不是問題。問題是,在R Markdown中運行此代碼以編寫HTML文件時,此錯誤會暫停執行並導致不生成任何HTML文件。在編碼錯誤時無法輸出針織HTML

作爲一個補丁,我要運行boxplot只有矩陣不是所有的NA。這樣可行。然而,我想知道是否可以讓knitr忽略這個錯誤,而不是修補我的代碼。謝謝。

這是錯誤消息:

Error in plot.window(xlim = xlim, ylim = ylim, log = log, yaxs = pars$yaxs) : 
    need finite 'ylim' values 
Calls: <Anonymous> ... boxplot -> boxplot.default -> do.call -> bxp -> plot.window 
In addition: Warning messages: 
1: In min(x) : no non-missing arguments to min; returning Inf 
2: In max(x) : no non-missing arguments to max; returning -Inf 
Execution halted 

重複性代碼:

```{r,echo = FALSE, warning = FALSE, message=FALSE} 
knitr::opts_chunk$set(cache=TRUE) 

#MatrixPos - not empty 
MatrixPos <- structure(list(difFwd1 = 0, difFwd2 = 0.200000000000045, difFwd3 = 0.100000000000136,difFwd4 = 0, difFwd5 = 0.200000000000045), .Names = c("difFwd1","difFwd2", "difFwd3", "difFwd4", "difFwd5"), row.names = "155", class = "data.frame") 

#MatrixNeg - empty 
MatrixNeg <- structure(list(difFwd1 = NA_real_, difFwd2 = NA_real_, difFwd3 = NA_real_,difFwd4 = NA_real_, difFwd5 = NA_real_), .Names = c("difFwd1","difFwd2", "difFwd3", "difFwd4", "difFwd5"), row.names = "NA", class = "data.frame") 

boxplot(MatrixPos, notch = TRUE, outline = TRUE) 
boxplot(MatrixNeg, notch = TRUE, outline = TRUE) 

``` 
###note must remove the four spaces for the code to work in R-Studio 


#Solution attempt: 
if(!all(is.na(MatrixNeg))) boxplot(MatrixNeg, notch = TRUE, outline = TRUE) 

回答

3

嘗試設置您的塊選項error=TRUE

```{r,echo = FALSE, warning = FALSE, message=FALSE, error=TRUE} 
knitr::opts_chunk$set(cache=TRUE) 

#MatrixPos - not empty 
MatrixPos <- structure(list(difFwd1 = 0, difFwd2 = 0.200000000000045, difFwd3 = 0.100000000000136,difFwd4 = 0, difFwd5 = 0.200000000000045), .Names = c("difFwd1","difFwd2", "difFwd3", "difFwd4", "difFwd5"), row.names = "155", class = "data.frame") 

#MatrixNeg - empty 
MatrixNeg <- structure(list(difFwd1 = NA_real_, difFwd2 = NA_real_, difFwd3 = NA_real_,difFwd4 = NA_real_, difFwd5 = NA_real_), .Names = c("difFwd1","difFwd2", "difFwd3", "difFwd4", "difFwd5"), row.names = "NA", class = "data.frame") 

boxplot(MatrixPos, notch = TRUE, outline = TRUE) 
boxplot(MatrixNeg, notch = TRUE, outline = TRUE) 

``` 

給出了這樣的結果: enter image description here

來自knitr options:「error:(TRUE;邏輯)是否保存錯誤(來自stop());默認情況下,即使出現錯誤,評估也不會停止!如果我們想要R停止出現錯誤,我們需要將此選項設置爲FALSE「

+0

我知道必須有一個簡單的答案,但找不到它。謝謝vm。 – Krug

+0

我認爲您可以添加'cache'到塊選項:'{r,cache = TRUE,echo = FALSE,warning = FALSE,message = FALSE,error = TRUE}' – PoGibas

+0

@Pgibas多數民衆贊成真的,我只是不確定他是否還有其他原因它出來了(沒有看到他的代碼的其餘部分) – ano