Question

Je travaille sur grands ensembles de données récemment (plus de 400 milliers de lignes). Jusqu'à présent, je suis en utilisant XTS format, ce qui a bien fonctionné pour les ensembles de données « petits » de quelques dixièmes de milliers d'éléments.

Maintenant que le projet se développe, R se bloque tout simplement lors de la récupération des données pour la base de données et de le mettre dans les XTS.

Je crois comprendre que R devrait être en mesure d'avoir des vecteurs avec la taille jusqu'à 2 ^ 32-1 éléments (ou 2 ^ 64-1 selon la version). Par conséquent, je suis venu à la conclusion que XTS pourrait avoir des limites, mais je ne pouvais pas trouver la réponse dans le doc. (Peut-être que j'étais un peu trop confiant au sujet de ma compréhension de la taille théorique de vecteur possible).

Pour résumer, je voudrais savoir si:

  1. XTS a en effet une taille limite
  2. Que pensez-vous est la façon la plus intelligente de gérer les grandes séries de temps? (Je pensais à diviser l'analyse en plusieurs ensembles de données plus petits).
  3. Je ne reçois pas un message d'erreur, R arrête simplement automatiquement. Est-ce un comportement connu?

SOLUTION

  1. La même chose que R et il dépend du type de mémoire utilisée (64bits, 32 bits). Il est de toute façon extrêmement large.
  2. Chuncking données est en effet une bonne idée, mais il est pas nécessaire.
  3. Ce problème est venu d'un bug dans la R 2.11.0 qui a été résolu dans la R 2.11.1 . Il y avait un problème avec le vecteur longues dates (ci-après les indices des XTS).
Était-ce utile?

La solution

En ce qui concerne vos deux questions, mon 0,02 $:

  1. Oui, il y a une limite de 2 ^ 32-1 éléments pour les vecteurs de R. Cela vient de la logique d'indexation, et qui se trouve apparemment « en profondeur » assez en R qu'il est peu susceptible d'être remplacé rapidement (comme cela affecterait tant le code existant). Google la liste r-devel pour plus de détails; Cela est apparu auparavant. XTS n'impose pas une restriction supplémentaire.

  2. Oui, les choses se diviser en morceaux qui sont gérables est le plus intelligent approche. Je l'habitude de le faire sur les grands ensembles de données quand je travaillais exclusivement avec les versions 32 bits de R. Je vais maintenant utiliser et pas R 64 bits plus cette question (et / ou rester sain d'esprit mes ensembles de données),

Il y a quelques « hors-mémoire » approche, mais je voudrais tout d'abord essayer de repenser le problème et affirmer que vous avez vraiment besoin de toutes 400k lignes à la fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top