为什么将数字转换为整数我会得到NA?

时间:2019-05-29 14:24:45

标签: r integer long-integer

你好,我正在尝试将数字转换为R中的整数,但是当数字太大时,它将转换为NA,为什么?我该如何避免这个问题?

只是一些例子

>df[,2] 
[1]          0          0          0          0          0          0          0    5361230  780600500          0          0          0
 [13]  764111150          0          0          0          0         9999816350 0         23237410347   91198500 1957077150  124890245   64232150

>as.integer(df[,2])
 [1]          0          0          0          0          0          0          0    5361230  780600500          0          0          0
 [13]  764111150          0          0          0          0         NA          0         NA   91198500 1957077150  124890245   64232150

我想保留NA,因为可能是原始数字吗? 谢谢

1 个答案:

答案 0 :(得分:3)

您的数字太大,无法容纳整数:

23237410347 > .Machine$integer.max
## [1] TRUE

使用double也许就足够了。另外,有一个程序包支持64位整数(R本机支持32位)。

library(bit64)

as.integer64(23237410347)
## integer64
## [1] 23237410347