我正在尝试制作一个将时间(以字符形式)转换为十进制格式的函数,以便 1 对应于凌晨 1 点,23 对应于晚上 11 点,24 表示一天的结束。
这是执行此操作的两个函数。这里一个函数向量化,而另一个函数向量化
time2dec <- function(time0)
{
time.dec <-as.numeric(substr(time0,1,2))+as.numeric(substr(time0,4,5))/60+(as.numeric(substr(time0,7,8)))/3600
return(time.dec)
}
time2dec1 <- function(time0)
{
time.dec <-as.numeric(strsplit(time0,':')[[1]][1])+as.numeric(strsplit(time0,':')[[1]][2])/60+as.numeric(strsplit(time0,':')[[1]][3])/3600
return(time.dec)
}
这就是我得到的...
times <- c('12:23:12','10:23:45','9:08:10')
#>time2dec(times)
[1] 12.38667 10.39583 NA
Warning messages:
1: In time2dec(times) : NAs introduced by coercion
2: In time2dec(times) : NAs introduced by coercion
#>time2dec1(times)
[1] 12.38667
我知道time2dec
哪个是矢量化的,为最后一个元素提供 NA,因为它提取9:
而不是9
小时。这就是我创建time2dec1
但我不知道为什么它没有被矢量化的原因。
我也会有兴趣获得更好的功能来做我想做的事情。我看到这解释了我的问题的一部分,但没有提供线索来做我正在尝试的事情。