rmysqlでフェッチした整数列をダブルに変換することはできません
-
10-10-2019 - |
質問
さて、との変換 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
解決
私は今愚かだと感じていますが、これは数字が実際に10進数を持っている場合であることが判明しましたが、それは印刷されていませんでした 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()
.
所属していません StackOverflow