Puede responder a muchas de sus preguntas leyendo la página de ayuda ?integer
. Dice:
R utiliza enteros de 32 bits para los vectores de enteros, por lo que la gama de números enteros representables se limita a aproximadamente +/- 2 * 10^9.
La ampliación de enteros más grandes está siendo considerada por R Core, pero no va a suceder en un futuro próximo.
Si desea una capacidad "bignum", instale Martin Maechler's Rmpfr package [PDF]. Recomiendo el paquete 'Rmpfr' debido a la reputación del autor. Martin Maechler también está muy involucrado con el desarrollo del paquete Matrix y también con R Core. Hay alternativas, incluidos paquetes aritméticos como 'gmp', 'Brobdingnag' y el paquete 'Ryacas' (este último también ofrece una interfaz matemática simbólica).
A continuación, para responder a los comentarios críticos en la respuesta a la que se vinculó y cómo evaluar la relevancia para su trabajo, considere esto: si hubiera la misma funcionalidad estadística disponible en uno de esos idiomas "modernos" que existen está en R, probablemente vería una migración de usuario en esa dirección. Pero diría que la migración, y ciertamente el crecimiento, está en la dirección R en este momento. R fue construido por estadísticos para estadísticas.
Hubo una vez una variante de Lisp con un paquete de estadísticas, Xlisp-Stat, pero su principal desarrollador y proponente ahora es miembro de R-Core. Por otro lado, uno de los primeros desarrolladores de R, Ross Ihaka, suggests working toward development in a Lisp-like language [PDF]. Hay un lenguaje compilado llamado Clojure (pronunciado como los que hablan inglés dirían "cierre") con una interfaz experimental, Rincanter.
Actualización:
Las nuevas versiones de R (. + 3.0) tiene 53 bits enteros de una especie (usando la mantisa numeric
). Cuando a un elemento vectorial "entero" se le asigna un valor superior a ".Machine $ integer.max", todo el vector se fuerza a "numérico", a.k.a. "doble". El valor máximo para integers
permanece como estaba, sin embargo, puede haber coerción de vectores enteros para duplicar la precisión en casos que anteriormente generarían un desbordamiento. Desafortunadamente, la longitud de las listas, las dimensiones de matriz y matriz, y los vectores todavía se establece en integer.max
.
Al leer valores grandes a partir de archivos, probablemente sea más seguro utilizar la clase de carácter como objetivo y luego manipular. Si hay una coacción a los valores de NA, habrá una advertencia.
+1 para el paquete Rmpfr! –
El paquete 'gmp' también puede ser de interés – James
Estoy haciendo un DT [, sapply (.SD, sum, na.rm = T)] con un data.table lleno de 0,1 y NA, con 2 millones filas Y obtengo el mensaje de desbordamiento, pero el número máximo generado debe ser menor a 2 millones. ¿Qué podría pasar? – skan