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
Était-ce utile?

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()

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