我们必须处理哪些数据类型选择?默认情况下,整数的大小似乎是32位,因此来自sql server的bigint数字以及通过py2从python传递的任何大数字都将受到干扰。
> 123456789123
[1] 123456789123
> 1234567891234
[1] 1.234568e+12
使用RODBC读取bigint值123456789123456789时,其返回值为123456789123456784(请参阅最后一位数字),而通过RJSONIO反序列化时,该数字将返回-1395630315L(这似乎是RJSONIO的附加错误/局限性)。
> fromJSON('[1234567891]')
[1] 1234567891
> fromJSON('[12345678912]')
[1] -539222976
实际上,我确实需要能够处理来自JSON的大量数据,因此在RJSONIO的限制下,除了找到更好的JSON库(目前似乎是非选择项)之外,我可能没有其他解决方法。我想听听专家对此以及一般情况的看法。
最佳答案
参见help(integer)
:
Note that on almost all implementations of R the range of
representable integers is restricted to about +/-2*10^9: ‘double’s
can hold much larger integers exactly.
因此我建议您使用
numeric
(即“double”)-一个 double 数字。
关于r - R中的long/bigint/decimal等效数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053397/