1

いくつかのRコードのデバッグに数時間を費やしInfたところ、計算中に侵入したエラーが原因であることがわかりました。をチェックしましNAたが、チェックすることを考えていませんでしたInf

将来この状況を防ぐために、次の関数を作成しました。

is.bad <- function(x){
  is.na(x) | is.nan(x) | is.infinite(x)
}

>     is.bad(c(NA, NaN, Inf, -Inf, 0, 1, 1000, 1e6))
[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE

RIで知っておくべき他の特別なデータ型はありますか?

4

3 に答える 3

4

!is.finite(x)is.bad(x)あなたの;と同等です 、、、および値を検出Inf(および-Inf)します。NANaN

于 2012-10-24T22:56:59.567 に答える
1

それはあなたがやろうとしていることに少し依存します。最近、一連のデータサブセットの線形モデルを作成しているときに同様の問題が発生しました。可能な場合に係数を取得するために私が働いたのは、プログラム停止エラーメッセージの代わりにNAでした。

Coef <- ifelse(is.numeric(try(coef(lm(y~x, data=DF)), silent=T)), coef(lm(y~x+0, DF)), NA)

だから私はベクトルを取得します

 [1] 2.3 4.3 5.4 6.2 2.8 NA 3.2

エラーメッセージの代わりに、適切な間隔で配置します。

于 2012-10-24T22:15:45.367 に答える
1

何をしているのかによっては、is.null()ある時点で時間を大幅に節約できる可能性もあります。一般的に言うのは難しい。

于 2012-10-24T22:08:05.990 に答える