R: Convert hours:minutes:seconds

Using lubridate:

Time.Training<- c("1:00:00", "0:45:00", "0:30:00", "1:30:00")

library(lubridate)
res <- hms(Time.Training)        # format to 'hours:minutes:seconds'
hour(res)*60 + minute(res)       # convert hours to minutes, and add minutes
## [1] 60 45 30 90

Try this. We basically converting to POSIXlt class first by pasting a real date to the vector using the Sys.Date() function (because there is no hour class in base R) and then using hour and min arguments in order to achieve the output

Res <- as.POSIXlt(paste(Sys.Date(), Time.Training))
Res$hour*60 + Res$min
## [1] 60 45 30 90

Here are some alternatives:

1) The chron package has a "times" class in which 1 unit is a day and there are 60 * 24 minutes in a day so:

library(chron)
60 * 24 * as.numeric(times(Time.Training))

giving:

[1] 60 45 30 90

1a) Another approach using chron is the following (giving the same answer):

library(chron)

ch <- times(Time.training)
60 * hours(ch) + minutes(ch)

2) Here is an approach using read.table and matrix/vector multiplication. No packages are needed:

c(as.matrix(read.table(text = Time.Training, sep = ":")) %*% c(60, 1, 1/60))

(Using "POSIXlt" is probably the most straight-forward approach without packages but another answer already provides that.)