De acuerdo con la documentación R 'Memory-limits', no es posible asignar un vector de longitud superior a 2^31-1. Esto se debe a que el número entero utilizado como índice solo puede usar 31 bits (un bit para el signo). Pero en un sistema de 64 bits, debería ser capaz de asignar vectores más largos. ¿Por qué R impone esta misma longitud máxima en sistemas de 64 bits? ¿Hay alguna manera de eludir el límite?Longitud máxima para un vector en R
Respuesta
Si está dispuesto a trabajar con la versión de desarrollo de R, puede tener experimental compatible con esta función. De http://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html:
VECTORES DE LARGO
Hay los inicios de apoyo para los vectores de más de 2^31 - 1 elementos en plataformas de 64 bits. Esto se aplica a los vectores crudos, lógicos, enteros, dobles, complejos y de caracteres, así como a las listas. (Los elementos de los vectores de caracteres permanecen limitados a 2^31 - 1 bytes).
Todos los aspectos son actualmente experimentales.
Lo que se puede hacer con tales vectores actualmente es algo limitado, y la mayoría de las operaciones devolverá el error 'vectores largos no admitidos todavía'. Se pueden serializar y deserializar, coercion, identico() y object.size() el trabajo y los medios se pueden calcular. Sus longitudes pueden ser obtener y establecer por xlength(): la longitud de llamada() en un vector largo arrojará un error.
La mayoría de los aspectos de indexación están disponibles. Generalmente, los índices de doble valor se pueden usar para acceder a elementos que van más allá de 2^31 - 1.
Consulte el enlace para obtener más información. No he experimentado con esto en absoluto, así que no puedo comentar si todavía es útil o no.
Si va a http://developer.r-project.org/R_svnlog_2011 (y http://developer.r-project.org/R_svnlog_2012) y busca "vectores largos", puede hacerse una idea del trabajo que está sucediendo.
Gran sugerencia para escanear a través del registro svn. Ver que es esencialmente "ripley, ripley, ripley, ..." quien está haciendo el trabajo me recuerda a [esta publicación] (http://dirk.eddelbuettel.com/blog/2007/08/11/) desde atrás en el día. –
Aquí hay más detalles que complementarán la respuesta de Ben. Las limitaciones parecen heredarse de los lenguajes de programación de nivel inferior utilizados para construir R, especialmente (aparentemente) el código FORTRAN. Entonces, obviamente, la transición de R para que pueda aprovechar al máximo los sistemas de direccionamiento de 64 bits va a ser un proyecto importante.
Desde el R-admin manual:
Incluso en 64 bits construye de R existen límites en el tamaño de los objetos R (consulte la ayuda ("Memory-límites"), algunos de los cuales se derivan de la utilización de Enteros de 32 bits (especialmente en el código FORTRAN). En todas las compilaciones de R, la longitud máxima (número de elementos) de un vector es 2^31-1, alrededor de 2 mil millones, y en compilaciones de 64 bits del tamaño de un bloque de la memoria asignada está limitada a 2^34-1 bytes (8GB). Se prevé que se levantarán eventualmente * pero la necesidad de objetos de 8GB es (cuando esto fue escrito en 2011) excepcional.
(También hay una nota al pie irónica en el manual, donde puse un *
, señalando que "este comentario ha estado en el manual desde 2005". :)
- 1. Cómo crear un vector numérico de longitud cero en R
- 2. Longitud máxima de un openID
- 3. Fuerza longitud máxima para cadena en PostgreSQL
- 4. carga máxima longitud
- 5. Longitud máxima de byte []?
- 6. Establecer UITextField Longitud máxima
- 7. Longitud máxima del identificador
- 8. Longitud máxima para HTML <textarea>
- 9. Longitud máxima para la cola de scala
- 10. Longitud máxima de memoria intermedia para sendto?
- 11. Longitud máxima para entrada/salida MD5
- 12. R - ¿cómo declaro un vector de Fecha?
- 13. un vector dinámico de C a R
- 14. Dividir un vector en trozos en R
- 15. MySQL y GROUP_CONCAT() longitud máxima
- 16. Longitud máxima del título Atributo
- 17. SQLAlchemy: longitud máxima de columna
- 18. Longitud máxima predeterminada cadena xsd
- 19. subconjunto() de un vector en R
- 20. Dividir un vector de cadena en R
- 21. expresiones regulares para la longitud máxima en JavaScript
- 22. Establezca la longitud chr máxima de un TextBlock en XAML
- 23. Longitud máxima de un nombre de tabla en MySQL
- 24. Imprime un vector en R en el mismo formato utilizado para ingresarlo en R
- 25. Crear un vector que enumera la longitud de ejecución del vector original con la misma longitud que el vector original
- 26. Nombre de usuario de Windows longitud máxima
- 27. Longitud máxima de la propiedad FormsAuthenticationTicket.UserData
- 28. Longitud máxima de fragmentos de URL (hash)
- 29. Longitud máxima para el campo de texto largo
- 30. MVC3: longitud máxima de la solicitud superó
Tenga en cuenta que este límite se eliminó en R-3.0.0. –