Erreur lors de la création de la R de données.table avec date-heure POSIXlt
Problème de création des données.tableau avec la date-l'heure de la colonne:
> mdt <- data.table(id=1:3, d=strptime(c("06:02:36", "06:02:48", "07:03:12"), "%H:%M:%S"))
> class(mdt)
[1] "data.table" "data.frame"
> print(mdt)
Error in `rownames<-`(`*tmp*`, value = paste(format(rn, right = TRUE), :
length of 'dimnames' [1] not equal to array extent
Enter a frame number, or 0 to exit
1: print(list(id = 1:3, d = list(sec = c(36, 48, 12), min = c(2, 2, 3), hour = c(6, 6, 7), mday = c(31,
2: print.data.table(list(id = 1:3, d = list(sec = c(36, 48, 12), min = c(2, 2, 3), hour = c(6, 6, 7), m
3: `rownames<-`(`*tmp*`, value = paste(format(rn, right = TRUE), ":", sep = ""))
Créer en tant que données.cadre et convertir les données.table fonctionne!
> mdf <- data.frame(id=1:3, d=strptime(c("06:02:36", "06:02:48", "07:03:12"), "%H:%M:%S"))
> print(mdf)
id d
1 1 2014-01-31 06:02:36
2 2 2014-01-31 06:02:48
3 3 2014-01-31 07:03:12
> mdt <- as.data.table(mdf)
> print(mdt)
id d
1: 1 2014-01-31 06:02:36
2: 2 2014-01-31 06:02:48
3: 3 2014-01-31 07:03:12
> class(mdt)
[1] "data.table" "data.frame"
Ai-je raté quelque chose ou est-ce un bug? Si un bug, où dois-je le signaler?
Remarque j'utilise R la version 3.0.0 et je vois que certains avertissements re. les paquets construits avec la version 3.0.2. Peut-il être un problème? Dois-je mettre à niveau R lui-même? Tout ce que je fais semble être au travail même si.
- double possible de cast chaîne de IDateTime
- de données.la table ne prend pas en charge
POSIXlt
en raison de la taille et de la structure. UtilisationPOSIXct
ouITime
à la place. Mise à niveau de la R pour la version la plus récente - en général, il rend votre vie plus facile.
Vous devez vous connecter pour publier un commentaire.
Mise en forme de la réponse du Bleu Magister commentaire (merci beaucoup), des données.le tableau ne prend pas en charge POSIXlt types de données pour des raisons de performances -- voir fonte de la chaîne d'IDateTime comme suggéré que possible en double.
De sorte que le chemin à parcourir est de jeter de temps que ITime (type fourni par les données.table) ou de la date-heure (ou la date) en POSIXct, selon que la date de l'info, c'est important ou pas:
Comme une note au cas où quelqu'un peut en bénéficier, j'ai voulu créer date & temps de mon entrée de données avec date & temps dans des champs séparés.
J'ai trouvé utile d'apprendre (voir ?ITime) que l'on peut ajouter de temps ITime à jour en temps POSIXct et d'obtenir une date-heure POSIXct comme suit:
POSIXct
est un format datetime, et pas seulement date:as.POSIXct("2014-01-31 06:02:36")
.