ifelse(长度(日期)=1,日期,其他日期)在基本R、dplyr和data.table之间不同

ifelse(长度(日期)=1,日期,其他日期)在基本R、dplyr和data.table之间不同,r,if-statement,dplyr,null,data.table,R,If Statement,Dplyr,Null,Data.table,我试图测试日期向量的元素长度是否为0 使用base R可以很好地工作,但会以数字形式返回POSIXct: a<-numeric(0) >ifelse(length(a)==1,a,as.POSIXct("2017-12-26 17:53:53 AEDT")) [1] 1514271233 为什么不同?我认为当逻辑测试返回FALSE时,这些函数会忽略TRUE选项。有没有一种解决方案不需要转换回POSIXct?传统的好方法呢 if(length(a)==1){a}else(as.PO

我试图测试日期向量的元素长度是否为0

使用base R可以很好地工作,但会以数字形式返回POSIXct:

a<-numeric(0)

>ifelse(length(a)==1,a,as.POSIXct("2017-12-26 17:53:53 AEDT"))
[1] 1514271233

为什么不同?我认为当逻辑测试返回
FALSE
时,这些函数会忽略
TRUE
选项。有没有一种解决方案不需要转换回POSIXct?

传统的好方法呢

if(length(a)==1){a}else(as.POSIXct("2017-12-26 17:53:53 AEDT"))
[1] "2017-12-26 17:53:53 EST"
“测试日期向量的元素长度是否为0”。。。那没有道理。向量的元素的长度为1。如果要测试单个对象是否具有长度,请使用
If(){}else{}
,而不是
ifelse
/
If_else
/
fidelse
/,它们将作用于向量并返回与输入长度相同的结果。您可以尝试
.POSIXct(a)
as.double(as.POSIXct(.))
数据表解决问题。我们对效率进行了权衡,要求
yes
/
no
参数中的类型一致性
if(length(a)==1){a}else(as.POSIXct("2017-12-26 17:53:53 AEDT"))
[1] "2017-12-26 17:53:53 EST"