Целочисленный столбец, полученный с помощью RMySQL, не может быть преобразован в двойной

Что ж, преобразование с 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

person Daniel Dickison    schedule 08.12.2010    source источник


Ответы (1)


Сейчас я чувствую себя глупо, но оказалось, что это был случай, когда числа действительно имели десятичную часть, но она не печаталась из-за 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().

person Daniel Dickison    schedule 08.12.2010
comment
+1 Это должно было быть моим предложением @Daniel, так как я никак не могу заставить ваш код работать так, как вы продемонстрировали, без снижения уровня точности при печати. Сейчас самое время избавиться от этой директивы из вашего .Rprofile... (Кстати, примите свой собственный ответ.) - person Gavin Simpson; 08.12.2010
comment
Было бы неплохо, если бы существовал способ указать R печатать хотя бы десятичную точку для нецелых чисел, независимо от digits. - person Daniel Dickison; 11.12.2010