Rで生体信号時系列を扱うとき,時刻はミリ秒まで扱いたい場合があります.デフォルトでは,Rは秒の小数以下を表示しません.元のデータにはミリ秒まで記録してあるのに,「なんで表示してくれないの?」,「ミリ秒の値を捨てちゃったの?」という疑問がわきます.しかし,安心してください,見えていないだけで,ミリ秒の値はデータとして残ってます.
ミリ秒のデータを扱うために,今回やることは,digits
と digits.secs
のパラメタの値を変更するだけです.変更したら元に戻したくなるかもしれませんので,念のためでデフォルトの値を確認しておきます.
Rで以下を実行してください.
# 今回扱うパラメタ値の確認 options()$digits options()$digits.secs
digits
は7, digits.secs
はNULLになっていると思います.
時刻としてミリ秒まで表示
時刻をミリ秒まで表示したいときは,以下のコマンドを実行します.
options(digits.secs=3)
以下は,実際に試してみるRスクリプトです.
# 現在の時刻を代入 t.samp <- Sys.time() ############################ #秒を小数の桁まで表示 options(digits.secs=3) ############################ t.samp # 表示の確認
時刻を数値データに変更してミリ秒まで表示
digits.secs=3
を設定しても,時刻データをas.numeric
で数値に変更した場合に,期待外れの結果になることがあります.例えば,
# ミリ秒まで表示したい options(digits.secs=3) # 現在の時刻を代入 t.samp <- Sys.time() # 数値に変換 as.numeric(t.samp)
を実行すると,整数の秒で表示されます.つまり,秒単位の数値にしたのに,ミリ秒 (小数以下)まで表示されません.
この問題を解決するためには,
options(digits=13)
を実行します.この宣言をしないと,小数以下がないデータとして扱われます.
# 数値データに変更して,ミリ秒まで扱う場合は,この設定が必要 options(digits=13) # 現在の時刻を代入 t.samp <- Sys.time() # 数値に変換 as.numeric(t.samp)
謝辞
今回は,以下の記事を参考にさせていただきました.
大変参考になりました.ありがとうございました.