Как мне векторизовать эту функцию?Как мне векторизовать функцию?
difftime2string <- function (x) {
if (abs(x) < 1) return(sprintf("%.2fms",x*1000))
if (abs(x) < 100) return(sprintf("%.2fsec",x))
if (abs(x) < 6000) return(sprintf("%.2fmin",x/60))
if (abs(x) < 108000) return(sprintf("%.2fhrs",x/3600))
if (abs(x) < 400*24*3600) return(sprintf("%.2fdays",x/(24*3600)))
sprintf("%.2fyears",x/(365.25*24*3600))
}
EDIT: я имею в виду без Vectorize
- как я пишу vectorised код со многими if
с.
'v <- Vectorize (difftime2string)'? – Justin
Другой DateTime WTF. Вы знаете, что нет 365 (или 365,25) дней в году? В то время как Джош дал точный ответ на ваш вопрос, я настоятельно рекомендую вернуть полную строку DateTime и затем фильтровать такие вещи, как (псевдофункция) 'if (yearpart (string)! = 0) {print using" years "}' и так на. –
P.S. Как насчет использования 'switch'? –