如何确定尝试是否返回错误?

时间:2012-07-03 18:05:13

标签: r

我正在尝试执行以下操作:

try(htmlParse(ip[1], T)

我将a定义为:

ip[1] = paste('http://en.wikipedia.org/wiki/George_Clooney')

我想检查htmlParse是否有效。对于我的列表中的许多名称,将没有维基百科网站,因此如果维基页面不存在,我需要能够检查并用NA替换ip [1]。

有人可以告诉我如何做到这一点。我尝试使用命令geterrmessage(),但是我不确定每次更改名人名称时如何刷新。

目前我有以下内容:

if(!isTRUE(as.logical(grep(ip[1],err)))) {
    ip[1] = NA
    }
    else {

这肯定是错误的,因为它没有运行我想要的逻辑语句。

由于

阿玛尔

2 个答案:

答案 0 :(得分:25)

这个简单的例子可以帮助你,我想:

res <- try(log("a"),silent = TRUE)
class(res) == "try-error"
[1] TRUE

基本思想是当出现错误时,try返回(不可见)类“try-error”的对象。否则,res将包含您传递给try的表达式的结果。即。

res <- try(log(2),silent = TRUE)
res
[1] 0.6931472

花一些时间仔细阅读?try,包括示例(我猜不是那么简单)。正如下面的GSee所述,检查是否存在错误的更惯用的方法是使用inherits(res,'try-error')

答案 1 :(得分:1)

我会尝试从wiki下载所有名称(现有或不存在)并将其保存在单独的文件中。然后我将grep以下字符串 Wikipedia没有具有此确切名称的文章和对于不存在的,我会得到一个真值。通过这种方式,我相信您将确定解析器是否有效或名称是否存在。此外,您可以根据文件大小对下载的文件进行排序,以防您怀疑出现问题。腐败的那些尺寸较小。

Wikipedia article for a fictitious person 另外,我会使用tryCatch函数来处理逻辑状态:

x<-3
tryCatch(x>5,error=print("this is an error"))