tryCatch
次の方法で、設定内のエラーオブジェクトを調査してみました。
tryCatch( runif(n=1,k={5}),
error = function(e) recover() )
次に、4 番目の環境 ( value[[3]](cond)
) を選択して調べe
ます。
私はそれがあったことに気づきe$call
ました:
Browse[1]> e$call
runif(n = 1, k = {
5
})
そのため、エラー メッセージはその最初の行だけを使用しているようです。
すべての行を一緒に折りたたむことができます:
Browse[1]> paste(deparse(e$call),collapse='')
[1] "runif(n = 1, k = { 5})"
したがって、次のようなものを試すことができます:
tryCatch( runif(n=1,k={5}),
error = function(e) {
cat(sprintf('Error in %s: %s\n',
paste(deparse(e$call),collapse=''),
e$message))
} )
ただし、これはエラーメッセージ自体を修正するものではなく、エラーメッセージにつながる呼び出しのみを修正します。
runif(n = 1, k = { 5}) のエラー: 未使用の引数 (k = {
したがって、「xxx のエラー」は完了しましたが、「未使用の引数 xxx」はまだ完了していません。それは始まりですが、そこまでではありません。
これを改善する方法がわかりません(また、それが可能かどうかも知りたいです)。