Ich verwende das data.table
Paket für die Datenverarbeitung. Ich habe Probleme mit Gleichheit und Teilmenge festgestellt, wenn große Zahlen beteiligt sind. Ex:Große numerische Gleichheit und Teilmenge in data.table Paket
dt <- data.table(a = c(1, 841026176807, 841026176808))
dt[a==841026176807]
a
1: 841026176807
2: 841026176808
Ich dachte, es Genauigkeitsverlust von numerischem Typ (Darstellung von Doppel/Gleitkommazahlen), aber dies funktioniert:
dt[dt$a==841026176807]
a
1: 841026176807
Warum ist das Verhalten nicht im Einklang? Ist das irgendwo dokumentiert oder Bug?
'841026176807> .Maschine $ integer.max # [1] true', aber trotzdem denke ich, dass die erhöhte Präzision in R etwas neue Verwendung von 53bit ganzen Zahlen in gekickt haben sollte. Manchmal muss man Zeichenwerte für die Dateneingabe verwenden, aber dies sollte nicht für Konsolenoperationen benötigt werden. –
Dies lag an der Standardrundung der letzten 2 Bytes für numerische Typen, um Gleitkomma-Ungenauigkeiten zu vermeiden, wie unter '? SetNumericRounding' dokumentiert. Dieses Verhalten wird jetzt wieder in normales Verhalten (d. H. Keine Rundung) in der [aktuellen Entwicklungsversion] (https://github.com/Rdatatable/data.table/wiki/Installation) wiederhergestellt. – Arun