如何在R中编写尝试捕获

如何在R中编写尝试捕获

我想写trycatch处理从网上下载错误的代码。

url <- c(
    "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html",
    "http://en.wikipedia.org/wiki/Xz")y <- mapply(readLines, con=url)

这两个语句成功运行。下面,我创建一个不存在的网址:

url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz")

url[1]不存在。如何编写trycatch循环(功能)以便:

  1. 当URL错误时,输出将是:“web URL是错误的,无法获取”。
  2. 当URL错误时,代码不会停止,而是继续下载到URL列表的末尾?


UYOU
浏览 570回答 3
3回答

喵喵时光机

r使用函数来实现try-catch块:语法看起来有点像这样:result&nbsp;=&nbsp;tryCatch({ &nbsp;&nbsp;&nbsp;&nbsp;expr},&nbsp;warning&nbsp;=&nbsp;function(warning_condition)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;warning-handler-code},&nbsp;error&nbsp;=&nbsp;function(error_condition)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;error-handler-code},&nbsp;finally={ &nbsp;&nbsp;&nbsp;&nbsp;cleanup-code})在try Catch()中,可以处理两个“条件”:“警告”和“错误”。在编写每个代码块时要理解的重要事情是执行状态和范围。@来源

慕的地6264312

来了一个简单的例子:#&nbsp;Do&nbsp;something,&nbsp;or&nbsp;tell&nbsp;me&nbsp;why&nbsp;it&nbsp;failedmy_update_function&nbsp;<-&nbsp;function(x){ &nbsp;&nbsp;&nbsp;&nbsp;tryCatch( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;This&nbsp;is&nbsp;what&nbsp;I&nbsp;want&nbsp;to&nbsp;do... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;x&nbsp;*&nbsp;2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(y) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;...&nbsp;but&nbsp;if&nbsp;an&nbsp;error&nbsp;occurs,&nbsp;tell&nbsp;me&nbsp;what&nbsp;happened:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error=function(error_message)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("This&nbsp;is&nbsp;my&nbsp;custom&nbsp;message.") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("And&nbsp;below&nbsp;is&nbsp;the&nbsp;error&nbsp;message&nbsp;from&nbsp;R:") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(error_message) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(NA) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;)}如果您还想捕获“警告”,只需添加warning=类似于error=部分。
打开App,查看更多内容
随时随地看视频慕课网APP