私は経由tryCatch
設定でエラーオブジェクトを調査に行くを持っていた:
tryCatch(runif(n=1,k={5}),
error = function(e) recover())
そしてe
を調べるために、第4回環境(value[[3]](cond)
)を選択しました。
私は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}):未使用の引数(S)(K = {
したがって、 'Error in xxx'は完了しましたが、 '未使用引数xxx'はまだありません。それは始まりですが、その途中ではありません。
これを改善する方法はわかりません(可能であれば知りたいと思っています)。
内部関数geterrmessageからエラーメッセージが表示されるようです。そこに切り詰められている(それがそうであるように思われる)場合は、おそらくエラーメッセージを修正することは非常に難しいでしょう。内部関数のコードについては、https://svn.r-project.org/R/branches/R-2-14-branch/src/main/errors.cの 'do_geterrmessage'関数を参照してください。 – Aaron