嗯,使用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
答案 0 :(得分:4)
我现在觉得很愚蠢,但事实证明这个数字实际上是小数部分,但由于我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()
。