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
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top