7

重複の可能性:
Rでの数値比較の難しさ

こんにちは皆さん、

「Rインフェルノ」の論文によると。私は今、R地獄の最初のサークルにいます。これは異教徒が0.1==0.3/3を期待するところです。紙all.equalはそのような場合に関数を使用することを推奨していますが、">="または"<="の条件を確認する必要があります。それらの現在の例では失敗します:

> .1 >= .3/3
[1] TRUE
> .1 <= .3/3
[1] FALSE

不等式をチェックするall.equalと同様の関数はありますか?

ありがとうございました、

イリヤ

4

4 に答える 4

10

の主なテストはall.equalabs(x-y) < toleranceいくつかの値xyいくつかの小さなtolerance. 同等の不等式検定では、次のことを確認します。

x <= y:         x-y < tolerance
x < y:          x-y < -tolerance
x >= y:         x-y > -tolerance
x > y:          x-y > tolerance
于 2010-11-02T15:30:08.807 に答える
9

次の質問を参照してください。

一般的に言えば、上記の 2 番目のリンクに従って許容レベルを含めることで、これに対処できます。

于 2010-11-02T15:26:02.037 に答える
6

R の FAQ エントリを参照してください。なぜ R はこれらの数値が等しいと考えないのか、およびその中の参照を参照してください。

于 2010-11-02T15:20:25.803 に答える
4

zapsmall()探している動作が得られると思われるものを賢明に使用してみてください。これがすべての状況で機能するかどうかはわかりません。例えば、

.1 >= zapsmall(.3/3)
[1] TRUE
> .1 <= zapsmall(.3/3)
[1] TRUE
于 2010-11-02T15:28:45.557 に答える