1

以下のコマンドを使用して分 (例: 366) を時と分の形式 (例: 6:06) に変換すると、奇妙なエラーが発生しました。

library(chron) #https://cran.r-project.org/web/packages/chron/chron.pdf

sub(":\\d{2}", "", times((X%/%60 +  X%%60 /3600)/24))

実際のコードでは、X の代わりにベクトルを割り当てます。ここでは数値のみを使用します。例えば:

sub(":\\d{2}", "", times((240.8%/%60 +  240.8%%60 /3600)/24))

「04:01」となるはずです。しかし、同じコマンドで 419.8 分が誤って「6:00」と表示されますか?

sub(":\\d{2}", "", times((419.8%/%60 +  419.8%%60 /3600)/24))

数字の 419 を除いて再実行すると、再び正しくなります。「06:59」。乱数を使用してコードを再実行しましたが、他のコードではうまくいっているようです。問題がわかりません。私は何を間違っていますか?

4

1 に答える 1

1
library(chron)
times((419.8%/%60 +  419.8%%60 /3600)/24)
# [1] 06:01:00
times((419%/%60 +  419%%60 /3600)/24)
# [1] 06:00:59

問題はsub正規表現にあります。試す:

sub(":\\d{2}$", "", times((419%/%60 +  419%%60 /3600)/24))
# [1] "06:00"
sub(":\\d{2}$", "", times((419.8%/%60 +  419.8%%60 /3600)/24))
# [1] "06:01"

更新

さらに、あなたの計算は分を秒に誤って変換しています。試す:

times((419.8%/%60 +  419.8%%60 / 60)/24)
# [1] 06:59:48
sub(":\\d{2}$", "", times((419.8%/%60 +  419.8%%60 / 60)/24))
# [1] "06:59"
于 2016-08-24T18:20:38.290 に答える