如何获得两点之间的时间?

我试图使用Sys.time来获取两点之间的时间。 但是,它不会以我喜欢的方式输出。

这是它现在的样子:

a <- Sys.time
...running stuff between these two points...
b <- Sys.time
c <- b - a
c
Time difference of 1.00558 hours

我只想要数字和单位。 我知道要获得我可以做的数字:

c[[1]]

但是,有时候c的结果可以给我几分钟或几分钟。 我只想要我有数字的情况,以及单位是几小时的情况。 有谁知道一种方式,我会得到类似于下面的东西,使用Sys.time()(或任何其他):

if (units == "hours")
{
  if (number => 1)
  {
      #do something
  }
}

使用基R的difftime可以让您获得不同单位的时差。 其余的是格式化。

a = Sys.time()
Sys.sleep(5)    #do something
b = Sys.time()    
paste0(round(as.numeric(difftime(time1 = b, time2 = a, units = "secs")), 3), " Seconds")
#[1] "5.091 Seconds"

您可以将所有内容评估为system.time函数的参数。 它会以秒为单位给你经过的时间。

paste0(system.time( rnorm(1000000, 0, 1) )[3] / 3600, " hours")
# "2.58333333334172e-05 hours"

或者,您可以在评论中使用Frank的建议。 difftime(b, a, units = "hours") ,这在大多数情况下可能是主要的解决方案


也许你可以尝试'tictoc'包。 如文档中所述,您可以执行以下操作:

tic()

#Do something

toc(log = TRUE, quiet = TRUE)

#Put the result in a log
log.txt <- tic.log(format = TRUE)

#Extract only the value
res <- gsub( " sec elapsed", "", unlist(log.txt))

#Clear the log
tic.clearlog()

那样的话, res只能给你价值,并且在几秒钟之内,所以要花几个小时很简单。 此外,如果你没有清除日志,你可以放置tic()toc()并把所有内容放到你的log.txt ,然后gsub( " sec elapsed", "", unlist(log.txt))将为您提供一个字符串矢量,每个迭代的值都以秒为单位,这可能非常有用

链接地址: http://www.djcxy.com/p/57481.html

上一篇: How to get the time elapsed between two points?

下一篇: record data in every 10 milliseconds