2017-11-11 1 views
1

現在の時刻をRのマイクロ秒でエポックタイムスタンプに変換したいと思います。そのために次のコードを実行しています。R:Sys.now()をマイクロ秒でエポックタイムスタンプに変換する

options(digits.secs = 6) 
now = Sys.time()  
as.double(now) 

Iは単に出力は、それがマイクロ捕捉されるが、私はas.double(now)を用いエポックタイムスタンプに変換する際、マイクロ秒精度がなくなった"2017-11-11 20:40:18.370305 CET"あるnowを印刷します。結果は1510429218です。マイクロ秒を保持する方法は?

答えて

0

あなたは(常に)、それらを持っていますが、あなたはより多くの数字を使用するようにprintを指示する必要があります:

R> n <- Sys.time() 
R> print(as.numeric(n), digits=16) ## digits matters here 
[1] 1510432192.721936 
R> n 
[1] "2017-11-11 14:29:52.721935 CST" 
R> 
0

Rは非常にハードな方法小数点以下の桁を処理する方法を学びました!次のコードを参照してください。

options(digits.secs = 6)  
a = c(as.double(Sys.time()), as.double(Sys.time()), as.double(Sys.time())) 
print(a) 

このコードの出力は次のとおりです。

[1] 1510430216 1510430216 1510430216 

タイムスタンプのマイクロ秒精度が失われているようです。しかし、データがファイルに書き込まれたり書き出されたりすると、10進数が表示されます。ファイルの

df = data.frame(a) 
write.csv(x = df, file = "test.csv") 

内容は以下のとおりです。

1 1510430215.888998 
2 1510430215.889942 
3 1510430215.889942 

もRセッション/コンソールで小数点以下の桁数を表示するには、可視性オプションを変更する必要があります。

すべての小数点は、Rセッションでも表示されます。

[1] 1510430215.888998 1510430215.889942 1510430215.889942 

デフォルトの表示桁数は7です。したがって、数値がそれよりも大きい場合、Rは小数点の桁を破棄することを選択します。それは大混乱を招くのでばかげている。少なくとも1つまたは2つの10進数を保持する必要があります。

関連する問題