为什么as.integer在R中返回NA?

时间:2015-09-15 06:22:53

标签: r memory integer

我注意到如果我的数字大于10位,as.integer函数将返回NA。

例如:

as.integer(10000000000)

会给NA。

为什么会这样?我想这可能与整数的存储有关?我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:9)

您可以通过以下方式找到整数限制:

> .Machine$integer.max
[1] 2147483647

任何更大的值都将被解释为NA

> as.integer(.Machine$integer.max)
[1] 2147483647
> as.integer(.Machine$integer.max+1)
[1] NA
Warning message:
NAs introduced by coercion to integer range 

如果你需要处理更大的值,可以使用as.numeric(数值可以处理比整数更大的值)或像gmp(多精度算术包)这样的包。