当通过 读取文件时fread,列可能被读取为 integer64(正确),但是当这些与 相乘时numeric,它们不会向上转换为numeric(如在 C++ 中或integers在 中R)。虽然这是bit64包中记录的行为。但这并不直观,当数字相乘时等integer64行为与integer.
此外,integer64当除以integer给出一个numeric变量时。所以行为很离奇!
那么我们是否应该始终fread使用colClasses = numericfor 列用于与numericetc 的算术表达式?
file contents
x,y
111,0.3
2147483648,0.3
> d <- fread(file)
> print(d$x*d$y)
x y
1: 111 0.3
2: 2147483648 0.3
> as.integer64(111) * 8e-2
integer64
[1] 9
> as.integer64(111) * 8 / 1e2
8.88
同样,quantiles其他 R 函数在integer64. 这个问题蔓延到所有使用integer64likenanotime