nanotime:如何处理 NAs in a tibble?

nanotime: how to deal with NAs in a tibble?

我正在使用出色的 nanotime 包来存储我的时间戳,但是当我的 tibble 包含缺失值时我无法使该包工作。

考虑一下:

library(nanotime)
library(tibble)
library(dplyr)

tibble(time = c('2020-01-01 10:10:10.123456',
                NA,
                '2020-01-01 10:10:10.123456')) %>% 
  mutate(enhance = nanotime(time, 
                            tz = 'GMT', 
                            format = '%Y-%m-%d %H:%M:%E9S'))
Error in RcppCCTZ::parseDouble(x, fmt = format, tz = tz) : 
  Parse error on NA

我在这里错过了什么?不幸的是,使用 na.rm = TRUE 不起作用。

谢谢!

问题是 NA 是逻辑类型,您需要让列中的所有值都具有相同类型。我们可以使用 as.integer64 将逻辑 NA 替换为 integer64 NA.

library(nanotime)

tbl <- tibble::tibble(time = c('2020-01-01 10:10:10.123456',
            NA,
            '2020-01-01 10:10:10.123456'))
tbl$enhance <- as.integer64(NA)
tbl$enhance[!is.na(tbl$time)] <- nanotime(na.omit(tbl$time), tz = 'GMT',
                                 format = '%Y-%m-%d %H:%M:%E9S')
nanotime(tbl$enhance)