10

I have the following code:

urls <- c(
    "xxxxx",
    "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html",
    "http://en.wikipedia.org/wiki/Xz"        
)
readUrl <- function(url) {
out <- tryCatch(
    readLines(con=url, warn=FALSE),
    error=function(e) {
        message(paste("URL does not seem to exist:", url))
        message(e)
        return(NA)
    },
    finally=message(paste("Processed URL:", url))
)    
return(out)
}
y <- lapply(urls, readUrl)

When I run it, I get:

URL does not seem to exist: xxxxx  
cannot open the connectionProcessed URL: xxxxx    
Processed URL: http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html  
Processed URL: http://en.wikipedia.org/wiki/Xz  
Warning message:  
In file(con, "r") : cannot open file 'xxxxx': No such file or directory  

but I expected:

URL does not seem to exist: xxxxx   
cannot open the connectionProcessed URL: xxxxx    
Warning message:    
In file(con, "r") : cannot open file 'xxxxx': No such file or directory  
Processed URL: http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html  
Processed URL: http://en.wikipedia.org/wiki/Xz  

So, why do I get:

Warning message:    
In file(con, "r") : cannot open file 'xxxxx': No such file or directory   
4

2 に答える 2

12

への呼び出しはreadLines警告を発行します。で警告を抑制することができますsuppressWarnings()。これを試して:

readUrl <- function(url) {
  out <- tryCatch(
    suppressWarnings(readLines(con=url, warn=FALSE)),
    error=function(e) {
      message(paste("URL does not seem to exist:", url))
      message(e)
      return(NA)
    },
    finally=message(paste("Processed URL:", url))
  )    
  return(out)
}
y <- lapply(urls, readUrl)

画面出力:

URL does not seem to exist: xxxxx
cannot open the connectionProcessed URL: xxxxx
Processed URL: http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html
Processed URL: http://en.wikipedia.org/wiki/Xz

または、 を使用options(warn=1)して、発生した警告を表示することもできます。これを試して:

readUrl <- function(url) {
  op <- options("warn")
  on.exit(options(op))
  options(warn=1)
  out <- tryCatch(
    readLines(con=url, warn=FALSE),
    error=function(e) {
      message(paste("URL does not seem to exist:", url))
      message(e)
      return(NA)
    },
    finally=message(paste("Processed URL:", url))
  )    
  return(out)
}
y <- lapply(urls, readUrl)

出力:

Warning in file(con, "r") :
  cannot open file 'xxxxx': No such file or directory
URL does not seem to exist: xxxxx
cannot open the connectionProcessed URL: xxxxx
Processed URL: http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html
Processed URL: http://en.wikipedia.org/wiki/Xz
于 2012-08-31T08:42:16.390 に答える
1

すべての警告を表示するには、次を実行します。

options(warn=1)

仕組みは次のとおりです。

  • warn = -1すべての警告を無視するように設定(または任意の負の整数)
  • warn = 010 個以下の警告を表示するように設定(デフォルト)
  • warn = 1すべての警告を表示するには、(上記のように)設定します
  • すべての警告をエラーに変換するように設定warn = 2(または 2 より大きい任意の正の整数)

実行することで利用可能な詳細な説明?options

警告メッセージの処理を設定する整数値。warn が負の場合、すべての警告は無視されます。warn がゼロ (デフォルト) の場合、最上位関数が戻るまで警告が保存されます。10 個以下の警告が通知された場合、それらは出力されます。last.warning というオブジェクトが作成され、関数 warnings を介して出力できます。warn が 1 の場合、警告は発生時に出力されます。warn が 2 (またはそれ以上、整数に強制可能) の場合、すべての警告がエラーになります。

于 2021-10-06T06:40:36.307 に答える