質問

どのように「投げる」のか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")

または

<*>

たとえば

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top