Pregunta

Bueno, la conversión con aparece as.double a trabajar, pero a continuación, la adición de un número no entero vuelve a número entero truncado. Por ejemplo, esta es la configuración:

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"

Hasta ahora todo está como se esperaba. Pero luego, cuando intenta agregar 0,5 a ella, se dice que es un doble, pero trunca la parte decimal como un entero:

> 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 columna en la base de datos MySQL es: `total_time` int(32) default NULL

Es realmente necesario para añadir algo de fluctuación de este vector, así que esto me está volviendo loco. Cualquier ayuda sería apreciada. Finalmente, 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
¿Fue útil?

Solución

Me siento estúpido ahora, pero esto resulta haber sido un caso en el que los números efectivamente contaba con la parte decimal, pero no se estaba imprimiendo debido a options(digits=3) en mi .Rprofile.

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

Moraleja de la historia es:. No confíe en todo lo que print()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top