如何防止R将此日期向量强制转换为数字?

时间:2014-06-27 20:57:54

标签: r

当将日期向量与NA组合时,如果NA首先出现,则R将整个向量强制转换为数字。如果NA没有首先出现,它将强制到Date。

x <- Sys.Date()
c(NA, x)
# [1]    NA 16248
c(x, NA)
# [1] "2014-06-27" NA

无论NAs出现的顺序如何,我怎样才能让它始终强制执行日期?其次,如果我不知道x的类型,我怎么能确定它强制向量x的类而不是数字呢?

1 个答案:

答案 0 :(得分:4)

这是S3方法调度对第一个参数NA起作用的结果,因此使用了默认方法,它将所有内容强制转换为数字。解决方案是明确要调用的方法,在本例中为c.Date()

x <- Sys.Date()
xx <- c.Date(c.Date(NA, x))
xx
class(xx)

> xx
[1] NA           "2014-06-27"
> class(xx)
[1] "Date"