¿Qué opciones de tipos de datos tenemos para manejar números grandes en R? De forma predeterminada, el tamaño de un entero parece ser de 32 bits, por lo que los números grandes del servidor SQL y cualquier número grande pasado de Python a través de rpy2 se destruyen.tipo de datos long/bigint/decimal equivalente en R
> 123456789123
[1] 123456789123
> 1234567891234
[1] 1.234568e+12
Cuando se lee un valor BIGINT del 123456789123456789 usando RODBC, se va recuperando a medida 123456789123456784 (véase el último dígito), y el mismo número cuando deserialized través RJSONIO, vuelve como -1395630315L (que parece un error adicional/limitación de RJSONIO).
> fromJSON('[1234567891]')
[1] 1234567891
> fromJSON('[12345678912]')
[1] -539222976
En realidad, yo no necesito ser capaz de manejar grandes cantidades procedentes de JSON, por lo que con la limitación de RJSONIO, puedo no tener una solución a excepción de la búsqueda de una mejor biblioteca JSON (que parece como un no-opción correcta ahora). Me gustaría saber qué opinan los expertos sobre esto y en general.
Miré la función as.numeric(), pero me confundí por el hecho de que el modo (1) también da el tipo "numérico", así que pensé que ya estaba tratando con ellos. Luego probé como .numeric ("123456789123456789") y solo vi unos pocos números impresos, por lo que supuse que había perdido la precisión. No sabía sobre opciones ("dígitos") antes. – haridsv
Ah, sí, lo de los dígitos. Además, si necesita mayor precisión o números grandes, CRAN tiene paquetes para eso, como p. el (extrañamente nombrado :-) paquete Brobdingnag para grandes cantidades, y también está el paquete gmp para interconectar GNU gmp. –
(Sé que Dirk lo sabe pero estoy comenzando a alertar a otros buscadores). Las versiones más nuevas de R permiten una transición más uniforme al almacenamiento de enteros como dobles. Sin embargo, la dimensión de la matriz todavía no está usando ese cambio de modo automático. –