クラスでのマイクロ/ミリ秒の表現/ストレージに関するあいまいさに戸惑っていますPOSIXlt
。
オブジェクトを印刷するPOSIXlt
と、それぞれの属性のクエリとして異なるマイクロ/ミリ秒の数字が表示されます(最後の数字は異なります)
これは完全に理にかなっているかもしれませんが、私はそれがちょっと奇妙だと思います。誰かが私にこれを説明できますか?
マイクロ秒
# Change digits for seconds >> microseconds
opts <- options(digits.secs=6)
x <- "2012-07-30 12:10:09.123123"
posix <- as.POSIXlt(x, tz="Europe/Berlin")
> posix
[1] "2012-07-30 12:10:09.123122 Europe/Berlin"
> posix$sec
[1] 9.123123
ミリ秒
posix$sec <- round(posix$sec, 3)
> posix
[1] "2012-07-30 12:10:09.122 Europe/Berlin"
> posix$sec
[1] 9.123
# Undo option change
options(opts)
また、これは実際には明確さを増しません(少なくとも私にとっては;-))
opts <- options(digits.secs=6)
x <- "2012-07-30 12:10:09.123123"
posix <- as.POSIXlt(x, tz="Europe/Berlin")
> posix
[1] "2012-07-30 12:10:09.123122 Europe/Berlin"
> posix$sec
[1] 9.123123
'sec'属性を手動で操作すると、結果が異なるように見えます。ここではまだ体系的なものはわかりませんが、余分な数字を追加すると(できれば、5
Aaaronが指摘したように)、望ましい結果が得られるようです。
# Workaround: extra digit
posix$sec <- posix$sec+0.0000005
> posix
[1] "2012-07-30 12:10:09.123123 Europe/Berlin"
posix$sec <- 9.123122
> posix
[1] "2012-07-30 12:10:09.123122 Europe/Berlin"
posix$sec <- posix$sec+0.0000005
> posix
[1] "2012-07-30 12:10:09.123122 Europe/Berlin"
posix$sec <- 9.123124
> posix
[1] "2012-07-30 12:10:09.123124 Europe/Berlin"
posix$sec <- posix$sec+0.0000005
> posix
[1] "2012-07-30 12:10:09.123124 Europe/Berlin"
posix$sec <- 9.123125
> posix
[1] "2012-07-30 12:10:09.123124 Europe/Berlin"
posix$sec <- posix$sec+0.0000005
> posix
[1] "2012-07-30 12:10:09.123125 Europe/Berlin"
posix$sec <- 9.123126
> posix
[1] "2012-07-30 12:10:09.123125 Europe/Berlin"
posix$sec <- posix$sec+0.0000005
> posix
[1] "2012-07-30 12:10:09.123126 Europe/Berlin"
options(opts)
セッション情報
R version 2.14.1 (2011-12-22)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
編集2012-07-31
アーロンのおかげで、左側の次の桁に丸めるために内部で使用される余分な桁を追加するだけで、うまくいく回避策を見つけたと思います。