1
私はエラー/警告の場合に別の関数を実行させたいtryCatch
関数を使用しています。この他の関数はいくつかの引数に依存し、何らかの理由でtryCatch
がエラーおよび警告関数であると認識しません。 は、ここで私は同じ問題に直面しています簡略化機能である:エラー/警告の場合にtryCatchで関数を実行します。
essai <- function(x){
y <- 2
result <- tryCatch({
sqrt(x*y)
} , warning = function(cond,x,y) {
message(cond)
sqrt(abs(x*y))
} , error = function(cond,x,y) {
message(cond)
sqrt(abs(x*y))
} , finally = {
message("done")
})
}
nbs <- c(1,2,3,-1,-2)
lapply(nbs, essai)
しかし、ここで私はError in value[[3L]](cond) : argument "x" is missing, with no default
を言って、エラーメッセージを持っています。 Rは、失敗した関数で使用されたxとyを再利用する必要があることを理解していません。なぜですか?
警告/エラー機能で、xとyをyに渡すことがわかっているのはなぜですか?必要な理由はありません。しかし、xとyパラメータを警告/エラー関数に取り除くと、xとyは呼び出し環境から取得されるので直接使うことができます。ちなみに、この場合、 'sqrt(abs(x * y))'を直接使うことができるので、実際のユースケースではないと仮定しなければなりません。 – Dason
はい、確かに、私の問題を再現する人工の単純化された関数 これは非常に明確ではありませんが、どのような場合には引数を入れますか? – Anais
私はあなたが何を意味するのかよくわかりません。エラー/警告関数は追加の引数を取ることができないので、引数を入れるかどうかを指定します。 – Dason