R で "[H]H:MM:SS" 形式の文字列を秒数に変換する

入力

入力として、以下のようなベクトルを想定する。各要素は "[H]H:MM:SS" 形式の文字列であり、時間を表している。要素はいくつあってもよい。

hhmmss = c("8:50:02", "0:40:03")

出力

出力として得たいのは、各要素を秒数に変換したベクトルである。

[1] 31802  2403

関数

以下の関数を定義する。

convert.hhmmss.to.seconds <- function(hhmmss) {
  unlist(lapply(lapply(strsplit(hhmmss, ":"), as.numeric), function(x) x %*% c(3600, 60, 1)))
}

実行例

hhmmss = c("8:50:02", "0:40:03")
convert.hhmmss.to.seconds(hhmmss)
[1] 31802  2403

入力の "SS" に小数点以下の桁が含まれている場合も、関数 convert.hhmmss.to.seconds は正しく動く。

hhmmss = c("8:50:02.06", "0:40:03.08")
convert.hhmmss.to.seconds(hhmmss)
[1] 31802.06  2403.08