当通过 读取文件时fread
,列可能被读取为 integer64(正确),但是当这些与 相乘时numeric
,它们不会向上转换为numeric
(如在 C++ 中或integers
在 中R
)。虽然这是bit64
包中记录的行为。但这并不直观,当数字相乘时等integer64
行为与integer
.
此外,integer64
当除以integer
给出一个numeric
变量时。所以行为很离奇!
那么我们是否应该始终fread
使用colClasses = numeric
for 列用于与numeric
etc 的算术表达式?
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
. 这个问题蔓延到所有使用integer64
likenanotime