【问题标题】:Why is as.integer returning NA in R?为什么 as.integer 在 R 中返回 NA?
【发布时间】:2015-09-15 06:22:53
【问题描述】:

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

例如:

as.integer(10000000000)

将给出 NA。

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

谢谢。

【问题讨论】:

  • 32 位整数,所以 2^31-1

标签: r memory integer


【解决方案1】:

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

> .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(多精度算术包)之类的包。

【讨论】:

  • 注意:gmp::as.bigz(.Machine$integer.max+1)2147483648
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
相关资源
最近更新 更多