Integer Column Foreeded с Rmysql не может быть преобразован в двойную

StackOverflow https://stackoverflow.com/questions/4383247

Вопрос

Ну, конверсия с as.double Появляется для работы, но затем добавление неинтегрального номера урезано к целому. Например, это настройка:

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"

До сих пор все как ожидалось. Но тогда, когда вы пытаетесь добавить 0,5 к нему, он говорит, что это двойное, но оно обрезает десятичную часть, как целое число:

> 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"

Столбец в базе данных MySQL: `total_time` int(32) default NULL

Мне действительно нужно добавить немного дрожания к этому вектору, так что это вождение мне орехи. Любая помощь будет оценена. Наконец, 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
Это было полезно?

Решение

Я чувствую себя глупым сейчас, но это оказывается случай, когда цифры на самом деле имеют десятичную часть, но она не была напечатана из-за options(digits=3) в моем .Rprofile.

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

Мораль этой истории: не доверяйте всем, что вы print().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top