質問
どのように「投げる」のかRのエラー?私は、データフレームといくつかの列名を取り、それらを処理する関数を持っています。列が存在しない場合、関数を停止し、それに依存するすべての関数を停止します。
recover
および browse
および traceback
を確認しましたが、それらは近いように見えましたが、探しているものではありませんでした。
解決
help(tryCatch)
を参照してください:
条件は以下によって通知されます 「
signalCondition
」。さらに、
「stop
」および「warning
」関数には 受け入れるように変更された
条件引数。
および「関連項目」の下:
'
stop
'および 'warning
'シグナル条件、および 'try
'は本質的に 'tryCatch
'の簡易バージョン。
したがって、おそらく stop
が必要になります。
他のヒント
簡単な例:
f <- function(a, b){
if (a == 0){
stop("error message")
}
}
Dirkが言及している基本関数を超えて:
R.ooパッケージには追加の例外があります非常に便利なthrow()関数を含む処理機能。通常のtryまたはtrycatch関数で例外をキャッチできます:
> try(throw("Division by zero.")); print("It's ok!");
Error: [2009-10-22 10:24:07] Exception: Division by zero.
[1] "It's ok!"
詳細については、 http://www1.mathsをご覧ください。 .lth.se / help / R / R.oo /
実際には、 stopifnot
関数は、コードに健全性チェックを実装するのに非常に便利です。いくつかの論理式を取り、それらのいずれかがfalseと評価されるとエラーを返します。
例: データフレーム「df」に列「c」が存在するかどうかを確認するには:
df <- data.frame(a = numeric(), b = numeric())
stopifnot(!is.null(df$c))
これにより、次のエラーがスローされます。
Error: !is.null(df$c) is not TRUE
列が存在するかどうかを確認し、必要な操作を実行できます。
df1
という名前の data.frame
があり、列 col1
が存在するかどうかをチェックするとします:
if(! any(grepl('^col1
または
if(! any(grepl('^col1
たとえば
,colnames(df1)))) stop("nonexistent column")
または
<*>
たとえば
,colnames(df1)))) return(-1)
たとえば
,colnames(df1)))) stop("nonexistent column")または
<*>たとえば