当将日期向量与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的类而不是数字呢?
答案 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"