2016-05-23 109 views
1

我想使用閃亮的驗證函數來捕獲讀取錯誤,並顯示自定義的錯誤消息,當讀取上傳的CSV文件,而不是讓閃亮轉發默認的read.csv錯誤消息。 下面是簡單的代碼閃亮驗證read.csv

validate(need(try(sd <- read.csv(file = sdFile[1], stringsAsFactors = FALSE)), "Error reading the file")) 

當有CSV文件格式沒問題,代碼工作正常。但是,當csv文件出現問題時,代碼仍會返回默認錯誤消息(以紅色字體顯示),例如,錯誤:未定義列被選中,但不是自定義消息。這裏有什麼問題?謝謝!

回答

2

我認爲它實際上是打印出來,如果我這樣做:

library(shiny) 
validate(need(try(sd <- read.csv(file = "mtcars1.csv", 
           stringsAsFactors = FALSE)), 
           Error reading the file !!!")) 

產生:

Error in file(file, "rt") : cannot open the connection 
In addition: Warning message: 
In file(file, "rt") : 
    cannot open file 'mtcars1.csv': No such file or directory 
Error: Error reading the file !!! 

我得到這個 - 注意你的消息是在最後一行。

您可以supressWarnings抑制警告這樣的:

library(shiny) 
suppressWarnings(
+ validate(need(try(sd <- read.csv(file = "mtcars1.csv", 
          stringsAsFactors = FALSE)), 
          "Error reading the file !!!!"))) 

產生:

Error in file(file, "rt") : cannot open the connection 
Error: Error reading the file !!!! 

或者你可以用這個剿一切,但你的信息(使用的tryCatch代替try):

library(shiny) 
suppressWarnings(
validate(need(tryCatch(sd <- read.csv(file = "mtcars1.csv", 
          stringsAsFactors = FALSE),  error=function (e){}), 
          "Error reading the file !!!!"))) 

yielding

Error: Error reading the file !!! 
+0

謝謝。我認爲我的錯誤與讀取csv文件無關,但與其他內容無關。是的,它應該可以正常工作。 – athlonshi