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 回答