Entier colonne avec rmysql alla chercher ne peut pas être converti en deux
-
10-10-2019 - |
Question
Eh bien, la conversion avec as.double
semble fonctionner, mais l'ajout d'un nombre non entier est tronqué retour à entier. Par exemple, voici la configuration:
geo <- fetch.data.from.mysql(...)
> head(geo$total_time)
[1] 1586 165 5339 1586 2895 1178
> typeof(geo$total_time)
[1] "integer"
> typeof(as.double(geo$total_time))
[1] "double"
Jusqu'à présent, tout est comme prévu. Mais quand vous essayez d'ajouter 0,5 à, il dit que c'est un double mais il tronque la partie décimale comme un nombre entier:
> head(geo$total_time + 0.5)
[1] 1586 166 5340 1586 2896 1178
> head(as.double(geo$total_time) + 0.5)
[1] 1586 166 5340 1586 2896 1178
> typeof(geo$total_time + 0.5)
[1] "double"
La colonne dans la base de données MySQL est: `total_time` int(32) default NULL
J'ai vraiment besoin d'ajouter une gigue à ce vecteur, si cela me rend dingue. Toute aide serait appréciée. Enfin, sessionInfo ():
> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid stats graphics grDevices utils datasets methods base
other attached packages:
[1] RMySQL_0.7-5 DBI_0.2-5 ggplot2_0.8.8 proto_0.3-8 reshape_0.8.3 plyr_1.2.1
loaded via a namespace (and not attached):
[1] tools_2.12.0
La solution
Je me sens stupide maintenant, mais cela se révèle avoir été un cas où le nombre avait en fait la partie décimale, mais il n'a pas été imprimé en raison de options(digits=3)
dans mon .Rprofile
.
> options(digits=10)
> head(geo$total_time + 0.5)
[1] 1586.5 165.5 5339.5 1586.5 2895.5 1178.5
Morale de l'histoire est:. Pas tout faire confiance que vous print()