1

以前の質問のフォローアップとして - na.rm=TRUE を使用すると NaN が削除されるため、(大規模な) コード ベースへの変更を最小限に抑えた回避策を探しています。

私はこれを試しましたが、動作しますが、

my.is.na <- function(x)
{
   ifelse(is.na(x) & !is.nan(x), TRUE, FALSE)
}

is.naしかし、組み込み関数をオーバーライドしたい。関数の名前をis.na明らかに に変更すると、無限再帰が発生します。私のオプションは何ですか?

PS: すべてのコードで、 が をis.na(NaN)返すと想定されているFALSEため、オーバーライドすることをお勧めします。

4

1 に答える 1

0

これが合法的な方法かどうかはわかりませんが、次の場合はどうでしょうか。

old.na <- is.na
is.na <- function(x)
{
   ifelse(old.na(x) & !is.nan(x), TRUE, FALSE)
}

これは R のいくつかのルールに違反する可能性があり、他の悪い結果をもたらす可能性がありますが、少なくとも、あなたが考えていたように動作します...

于 2013-04-16T06:49:56.353 に答える