R function times() из пакета chron странное форматирование

Очень простая операция "times(3/24)" с функцией times из пакета chron приводит к:

> times(3/24)  
[1] 03:00:00

Когда я использую это в кадре данных, это не приводит к правильному формату. Вместо этого он пишет исходное число "0,125". Однако когда я включаю его в оператор ifelse(), он работает.

Смотрите пример:

> X<-seq(1,10,1)  
> tdata<-as.data.frame(X)  
> tdata$T3AM<-times(3/24)  
> tdata$T3AMx<-times(ifelse(tdata$X>0,3/24,3/24))  
> tdata  
    X  T3AM    T3AMx  
1   1 0.125 03:00:00  
2   2 0.125 03:00:00  
3   3 0.125 03:00:00  
4   4 0.125 03:00:00  
5   5 0.125 03:00:00  
6   6 0.125 03:00:00  
7   7 0.125 03:00:00  
8   8 0.125 03:00:00  
9   9 0.125 03:00:00  
10 10 0.125 03:00:00    

Есть ли объяснение этому?

1 ответ

Проблема в том, что "times" класс в хрон не дает rep метод. Если мы добавим один, то это работает.

library(chron)
rep.times <- function(x, ...) times(rep(as.numeric(x), ...))

# from question:    
X <- seq(1,10,1)
tdata <- as.data.frame(X)
tdata$T3AM <- times(3/24)
tdata$T3AMx <- times(ifelse(tdata$X>0,3/24,3/24))

давая:

> tdata  
    X     T3AM    T3AMx
1   1 03:00:00 03:00:00
2   2 03:00:00 03:00:00
3   3 03:00:00 03:00:00
4   4 03:00:00 03:00:00
5   5 03:00:00 03:00:00
6   6 03:00:00 03:00:00
7   7 03:00:00 03:00:00
8   8 03:00:00 03:00:00
9   9 03:00:00 03:00:00
10 10 03:00:00 03:00:00

Обратите внимание, что Курт только что добавил rep.times до хрон 2.3-53, который должен быть на CRAN сейчас.

Другие вопросы по тегам