データ処理用にdata.table
パッケージを使用しています。大きな数字が関わっている場合、私は平等とサブセットの問題に気付きました。例:data.tableパッケージの大きな数値型の等価性とサブセット
dt <- data.table(a = c(1, 841026176807, 841026176808))
dt[a==841026176807]
a
1: 841026176807
2: 841026176808
私はそれが数値型(ダブル/浮動小数点数の表現)から精度の損失だと思ったが、これは動作します:
dt[dt$a==841026176807]
a
1: 841026176807
なぜ行動が一貫していないのですか?これはどこかのバグかバグですか?
'841026176807> .Machine $ integer.max#[1] true'のが、これにもかかわらず、私は53bit整数のRのやや新たな用途で利用可能な増加精度がで蹴られているべきだと思います。場合によっては、データ入力に文字値を使用する必要がありますが、これはコンソール操作には必要ありません。 –
これは、 '?setNumericRounding'で文書化されている浮動小数点の不正確さを避けるために、数値型の最後の2バイトのデフォルトの丸めによるものです。この動作は、[現在のdevelバージョン](https://github.com/Rdatatable/data.table/wiki/Installation)の通常の動作(つまり、丸めなし)に戻ります。 – Arun