Je n'ai pas vu de partie "présentation", je me présente donc en quelques lignes: je viens de terminer mon master d'actuariat première année à Paris, j'ai postulé en deuxième année, je suis actuellement en stage à Lyon dans une compagnie d'assurances pendant quelques mois, et je dois faire des statistiques sur les sinistres avec le logiciel R. Je connais la base de R (faire des fonctions simples et des manipulations pas trop compliquées), j'avais quand même travaillé sur ce langage pendant deux ans dans ma faculté, mais là j'ai dû me lancer dans l'exploration des tests disponibles en statistiques (anova, bartlett, etc).
Ma question, la voici: je dois travailler sur une matrice importée d'Access (appelée matrice2) d'un million et demi de lignes, et de 65 colonnes. Un gros truc, donc. Sa taille est de 632677160. Le problème, c'est que je n'arrive pas à agir dessus, à changer des valeurs de cellule, supprimer une colonne, ou en ajouter une. Ainsi, quand je tape:
Code : Tout sélectionner
matrice2[1,1]=1
j'ai le message suivant:
Erreur : impossible d'allouer un vecteur de taille 5.7 Mo
De plus : Warning messages:
1: In x[[jj]][iseq] <- vjj :
Reached total allocation of 1535Mb: see help(memory.size)
2: In x[[jj]][iseq] <- vjj :
Reached total allocation of 1535Mb: see help(memory.size)
3: In x[[jj]][iseq] <- vjj :
Reached total allocation of 1535Mb: see help(memory.size)
4: In x[[jj]][iseq] <- vjj :
Reached total allocation of 1535Mb: see help(memory.size)
(avec des variantes, parfois il y a juste la première ligne, ou le 5.7 est remplacé par 11.5).
J'ai tenté de régler cela tout seul, d'abord en changeant les memory.limit et memory.size, en les passant à 4000, mais il suffit que je ferme ma session pour que le memory.limit revienne à sa valeur fétiche de 1535.875 (ce qui explique la valeur de 1535 dans le message d'erreur).
J'ai tenté également de changer le mem.limits en mettant de grandes valeurs mais là encore sans plus d'effet. J'ai tenté de séparer les colonnes puis de concaténer celles qui étaient intéressantes, je suis même allé fourrager du côté du cmd (je travaille sous Windows, j'avais vu une page internet recommandant de modifier une ligne en passant par le cmd, mais je crois que cela concernait Linux, et de toute manière cela a raté) mais là encore sans succès. J'ai lancé une nouvelle importation de la matrice d'Access mais en gardant moins de colonnes (taille sous R, 450 millions), cl'importation a fonctionné seulement au troisième essai (avant, deux messages d'erreur) et de toute manière la matrice là aussi n'est pas modifiable.
Les questions que je me pose:
pourquoi se focaliser sur les valeurs de 5.7 et 11.5? Mon ordinateur n'est pas une antiquité, il peut très bien enregistrer quelque chose de cette taille, et de toute manière quand je fais "matrice2[1,1]=1", le 1 de droite a une taille de quelques octets, pas davantage.
Le problème de taille est-il lié à la taille de l'objet, ou la taille de tous les objets enregistrés? Autrement dit, quand on a 50 objets de taille Z, si je veux travailler sur l'un d'entre eux, cela fonctionnera t-il mieux, moins bien ou pareil que si j'avais 10 objets de taille 5Z?
Et surtout, comment faire pour pouvoir modifier cette matrice comme je veux?
Après moult recherches et tentatives pendant deux jours d'affilée, j'avais temporairement laissé tomber, mais si vous aviez une idée cela m'arrangerait bien.
Merci d'avance.