我在基于 UNIX 的系统上运行 R 脚本,该脚本包含大数的乘法,因此结果是整数溢出的 NA,但是当我在 Windows 上运行相同的脚本时,不会出现此问题。
但我应该让脚本在桌面上整夜工作(这是 Unix)。
这个问题有什么解决方案吗?
谢谢
for(ol in seq(1,nrow(yi),by=25))
{
for(oh in seq(1,nrow(yi),by=25))
{
A=(N*(ol^2)) + ((N*(N+1)*(2*N+1))/6) -(2*ol*((N*N+1)/2)) + (2*N*ol*(N-oh+1)) + ((N-oh+1)*N^2) + (2*N*(oh-N-1)*(oh+N))
}
}
with :
N=16569 = nrow(yi)
但是第一轮不是在unix上计算的。
最佳答案
您可以将整数转换为浮点数以便使用浮点数学进行计算吗?
例如:
> x=as.integer(1000000)
> x*x
[1] NA
Warning message:
In x * x : NAs produced by integer overflow
> x=as.numeric(1000000)
> x*x
[1] 1e+12
顺便说一句,尚不清楚为什么警告会出现在一个环境中而不是另一个环境中。我首先想到 R 的 32 位和 64 位版本可能分别使用 32 位和 64 位整数,但 doesn't appear to be the case 。就警告的显示方式而言,您的两个环境的配置是否相同?
关于r - 由整数溢出 + R 在 Linux 上产生的 NA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6042728/