Я пытаюсь проверить, имеют ли элементы вектора даты длину 0.
это нормально работает с использованием базы R, но возвращает POSIXct в виде цифры c:
a<-numeric(0)
>ifelse(length(a)==1,a,as.POSIXct("2017-12-26 17:53:53 AEDT"))
[1] 1514271233
Чтобы сохранить класс, нужно использовать dplyr или data.table, но они оба возвращают ошибки:
>dplyr::if_else(length(a)==1,a,as.POSIXct("2017-12-26 17:53:53 AEDT"))
Error: `true` must be length 1 (length of `condition`), not 0
Run `rlang::last_error()` to see where the error occurred.
>data.table::fifelse(length(a)==1,a,as.POSIXct("2017-12-26 17:53:53 AEDT"))
Error in data.table::fifelse(length(a) == 1, a, as.POSIXct("2017-12-26 17:53:53 AEDT")) :
'yes' has different class than 'no'. Please make sure that both arguments have the same class.
почему это отличается? Я думал, что эти функции просто проигнорируют параметр TRUE
, когда логический тест вернет FALSE
. Есть ли решение, которое не предусматривает обратное преобразование в POSIXct?