2010-12-08 4 views
2

Nun scheint die Konvertierung mit as.double zu funktionieren, aber dann wird das Hinzufügen einer nicht ganzzahligen Zahl wieder auf ganzzahlig abgeschnitten. Zum Beispiel ist dies das Setup:Integer-Spalte, die mit RMySQL abgerufen wurde, kann nicht in Double konvertiert werden

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" 

Bis jetzt ist alles wie erwartet. Aber dann, wenn Sie versuchen, 0,5, um es hinzuzufügen, es sagt, es ist eine doppelte ist, 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 fügen Sie etwas Jitter zu diesem Vektor hinzu, so macht mich das verrückt. Jede Hilfe wäre willkommen. 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 

Antwort

4

Ich fühle mich jetzt dumm, aber das erweist sich ein Fall gewesen, wo die Zahlen in der Tat die Dezimalstellen haben, aber es war nicht wegen options(digits=3) in gedruckt wird mein .Rprofile.

> options(digits=10) 
> head(geo$total_time + 0.5) 
[1] 1586.5 165.5 5339.5 1586.5 2895.5 1178.5 

Moral von der Geschichte ist: trauen alles, was Sie print().

+0

+1 Das sollte mein Vorschlag @Daniel sein, denn es gibt keine Möglichkeit, dass ich für Sie so arbeite, wie Sie es vorgeführt haben, ohne dabei etwas an Präzision beim * Drucken * zu verlieren. Jetzt wäre eine gute Zeit, um diese Anweisung aus Ihrem '.Rprofile zu entfernen ... (Akzeptieren Sie Ihre eigene Antwort übrigens). –

+0

Es wäre schön, wenn es eine Möglichkeit geben würde, R zu sagen, mindestens eine Dezimalzahl zu drucken Punkt für nicht ganzzahlige Zahlen, unabhängig von Ziffern. –

Verwandte Themen