我注意到如果我的数字大于10位,as.integer
函数将返回NA。
例如:
as.integer(10000000000)
会给NA。
为什么会这样?我想这可能与整数的存储有关?我该如何解决这个问题?
感谢。
答案 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(多精度算术包)这样的包。