Integer-Spalte mit RMySQL geholt können nicht doppelt konvertiert werden
-
10-10-2019 - |
Frage
Nun, die Umwandlung mit as.double
scheint zu funktionieren, aber dann das Hinzufügen eines nicht ganzzahligen Zahl wird wieder auf integer abgeschnitten. Zum Beispiel ist dies die Einstellung:
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"
Bisher ist alles wie erwartet. Aber dann, wenn Sie versuchen, 0,5, um es hinzuzufügen, es sagt, es ist ein Doppelzimmer, aber es kürzt die Dezimalstellen wie eine ganze Zahl:
> 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"
Die Spalte, in der MySQL-Datenbank ist: `total_time` int(32) default NULL
Ich brauche wirklich etwas Jitter zu diesem Vektor hinzuzufügen, so ist dies mich verrückt fahren. Jede Hilfe wäre sehr geschätzt. Schließlich Session ():
> 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
Lösung
Ich fühle mich jetzt dumm, aber das erweist sich als ein Fall gewesen zu sein, wo die Zahlen in der Tat haben die Dezimalstellen, aber es war nicht wegen options(digits=3)
in meinem .Rprofile
gedruckt wird.
> options(digits=10)
> head(geo$total_time + 0.5)
[1] 1586.5 165.5 5339.5 1586.5 2895.5 1178.5
Die Moral der Geschichte ist. Vertrauen Sie nicht alles, was Sie print()