【问题标题】:R, tryCatch errorR,tryCatch 错误
【发布时间】:2014-05-14 16:56:50
【问题描述】:

我正在解析很多网站,并编写了一个脚本,该脚本循环遍历来自单独文件的数千个链接。但是,我经历过有时 R 无法加载一个链接,它会在循环中间停止,导致许多其他 url 未解析。所以我尝试使用 tryCatch,所以脚本会忽略这种情况并继续解析下一个 url。但是,我最近体验到 tryCatch 会产生以下错误。

gethelp.url = 'http://forums.autodesk.com/t5/Vault-General/bd-p/101'
gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function() next) 

Error in value[[3L]](cond) : unused argument (cond)
Calls: withRestarts ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted

令人困惑的是有时它运行良好,有时它会抛出此错误消息,即使相同的脚本解析相同的 url。

谁能指导我如何解释此错误消息?我阅读了文档,但找不到太多见解。

【问题讨论】:

    标签: r try-catch


    【解决方案1】:

    我认为您的函数必须将cond 作为参数——至少我过去是这样使用tryCatch(),并且您的错误消息似乎表明它是问题所在。

    尝试以下方法: gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function(cond) next)

    请注意,上面的行仍然会抛出错误,b/c 示例代码不在循环中。所以我只是用NA替换了next,效果很好。

    编辑:针对 OP 的评论,我建议尝试以下操作:

    gethelp.df =tryCatch(htmlTreeParse(gethelp.url, useInternalNodes = T), error = function(cond)"skip")
    if(gethelp.df=="skip"){next}
    

    【讨论】:

    • 非常感谢!!顺便说一句,即使它在循环中,“下一个”似乎也不起作用。我不知道为什么.. 你有没有一起使用 tryCatch 和 next ?
    • 您可以尝试将next 替换为"skip",然后使用if(gethelp.df=="skip"){next}。有道理?因为它可能试图将next 分配给gethelp.df ......所以不要这样做,只需将关键工作(“跳过”)分配给gethelp.df,然后在if() 语句中测试关键字,如果为真,则使用next
    • 我明白了.. 非常感谢!!
    猜你喜欢
    • 2017-02-06
    • 2018-04-22
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多