11

私は次のことをしようとしています:

try(htmlParse(ip[1], T)

ここで、 a を次のように定義します。

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

htmlParse が機能したかどうかを確認したい。私のリストの多くの名前については、ウィキペディア サイトがないため、ウィキ ページが存在しない場合は、ip[1] を確認して NA に置き換えることができる必要があります。

誰かが私がそれを行う方法を教えてください。コマンド geterrmessage() を使用してみましたが、有名人の名前を変更するたびにフラッシュする方法がわかりません。

現在、私は以下を持っています:

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

私が望む論理ステートメントを実行していないため、これは間違いなく間違っています。

ありがとう

アマール

4

3 に答える 3

30

この簡単な例はあなたを助けるはずです、私は思います:

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')です。

于 2012-07-03T18:13:50.623 に答える
0

TRUE式を評価し、それが機能するかどうかを返す関数を次に示しますFALSE。式内で変数を割り当てることもできます。

try_catch <- function(exprs) {!inherits(try(eval(exprs)), "try-error")}

try_catch(out <- log("a")) # returns FALSE
out # Error: object 'out' not found

try_catch(out <- log(1)) # returns TRUE
out # out = 0
于 2021-08-14T16:07:43.607 に答える