Я написал нижеприведенную функцию, которая принимает нестандартный формат времени, например, «730» (7:30) и преобразует его в десятичное число часов, например, «7,5».
decimal_time <- function(x) {
x <- as.character(x)
tmp <- nchar(x)
if (tmp < 4 & !is.na(tmp)){
x <- paste0(strrep('0',4-tmp),as.character(x))
}
x <- sub("([[:digit:]]{2,2})$", ":\\1", x)
x <- strsplit(x,':')[[1]]
x <- as.numeric(x)
x[1]+x[2]/60
}
Чтобы применить его к одному столбцу, я делаю следующее ...
dt_times[, New_Time := lapply(Time, decimal_time)]
Однако я не могу понять, как применить эту же функцию ко многим столбцам, которые разделяюттот же формат.Конечно, если бы это была векторизованная функция (например, «среднее»), тогда я мог бы просто написать ...
dt_times[, lapply(.SD, mean), .SDcols = c('col1', 'col2')]
... но что мне делать, если моя функция в первую очередь использует lapply?!Помогите пожалуйста!