【发布时间】:2013-07-15 09:24:44
【问题描述】:
在更长的脚本中,我必须将向量 A (2614) 的长度与数据帧 B (1456000) 的行数相乘。如果我直接使用length(A) * nrow(B) 这样做,我会收到消息NAs produced by integer overflow,尽管当我乘以相同的数字时没有问题:
2614 * 1456000
[1] 3805984000
使乘法起作用的唯一方法是round(length(A)) * nrow(B) 或length(A) * round(nrow(B))。但是length 和nrow 产生的数字无论如何都必须是整数!此外,我使用函数is.integer的帮助页面上建议的以下函数对此进行了测试...
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x-round(x)) < tol
...当然,它们是整数。那么为什么我需要拐杖“圆”在这里?非常令人费解...有人知道背景中发生了什么?
【问题讨论】:
-
2614 * 1456000是 not 整数...> class(1456000) [1] "numeric" > class(1456000L) [1] "integer" -
@Michele 谢谢,因为这个评论,我更新了我的答案。
标签: r integer-overflow