2016-07-05 5 views
0

エポックタイムをミリ秒単位で指定するAPIを使用しています。整数オーバーフローを避けるために、POSIXctオブジェクトをミリ秒単位のEpoch時間に変換しますか?

もともと私は期日が高すぎる得たときにそれは暗黙的にdoubleに変換されたため、かなり迅速に破ったRの32ビット整数に

milli <- paste0(as.integer(posix) * 1000) 

が、明らかに使用していました。それで試しました。

milli <- paste0(as.integer(posix), "000") 

しかし、やはり有限の寿命があります。

Another answeroptions(scipen = 1000)を使用して提案されていますが、科学的な印刷が得られないことを意味します。これが本当にこれを行う唯一の方法であれば、それは行いますが、数値に最初に変換することなく、POSIXctからエポック時間をミリ秒単位で文字列に変換する方法はありますか?

必要な場合は、どんなパッケージでも使用できます。

+0

これはうまくいくでしょうか? http://www.inside-r.org/questions/how-convert-posixct-numeric-milliseconds – theArun

+0

あなたの(究極の)日付範囲は何ですか? 1つの選択肢は、最初の桁数(例えば、年に応じて)をソースPOSIXから削除することで、数字の結果が最初の桁(文字)なしの値になり、それらの桁を貼り付けることです。単純ではない私は同意する... –

+0

@Arunはまた、科学的な印刷を失う。現時点では私たちが使用しているソリューションですが、大きな数字を読んで苦労することはありません。 – Sean1708

答えて

0

'as.numeric(as.POSIXct(object$datum,tz='UTC')) * 1000’のように変換すると、オーバーフローに関する問題は発生しません。タイムゾーン 'tz'をあなたの好みに変更してください。

0

私がこれまでに見つけた最高の方法はそうのように、一時的に印刷形式を変更することです:

old_options <- options(scipen = 1000) 
milli <- paste0(as.numeric(posix) * 1000) 
options(old_options) 

それは脆い感じているが、それは今のところ動作します。

関連する問題