检索要在R中转换为秒的时间格式

检索要在R中转换为秒的时间格式,r,tidyverse,lubridate,R,Tidyverse,Lubridate,我有两个不同的数据集。一个使用时间格式为m:s,另一个使用h:m:s。我有一个解决方法来找出我正在使用的数据集,但是我想知道是否有一种简单的方法来检索时间格式,然后将其转换为秒 我使用的润滑油如下所示: library(tidyverse) library(lubridate) a <- c("00:01","00:03","00:05") b <- c("00:00:01","00:00:03","00:00:05") a %>% ms() %>% pe

我有两个不同的数据集。一个使用时间格式为
m:s
,另一个使用
h:m:s
。我有一个解决方法来找出我正在使用的数据集,但是我想知道是否有一种简单的方法来检索时间格式,然后将其转换为秒

我使用的润滑油如下所示:

library(tidyverse)
library(lubridate)

a <- c("00:01","00:03","00:05")
b <- c("00:00:01","00:00:03","00:00:05")

a %>% 
  ms() %>% 
  period_to_seconds()

b %>% 
  hms() %>% 
  period_to_seconds()
库(tidyverse)
图书馆(lubridate)
a%
周期到秒()
b%>%
hms()%>%
周期到秒()
我的期望是,我可以以某种方式检索格式,然后基于该格式应用
lubridate::ms()
lubridate::hms()


有什么想法吗?

假设输入向量只有一种格式,创建一个条件来检查字符数是否为“5”,然后在开始时粘贴
'00:,然后仅应用
hms
转换为时间格式

f1 <- function(vec) {
      if(all(nchar(vec)==5)) { 
        vec <- paste0("00:", vec)
       }
        vec %>%
           hms() %>%
           period_to_seconds()

}

f1(a)
#[1] 1 3 5
f1(b)
#[1] 1 3 5
f1%
周期到秒()
}
f1(a)
#[1] 1 3 5
f1(b)
#[1] 1 3 5

我认为对于第一个函数,您可以在开始时粘贴
“00”
,然后使用单个函数。问题是我想自动检测它。这是闪亮应用程序的一部分。