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 сейчас.