ifelse(长度(日期)=1,日期,其他日期)在基本R、dplyr和data.table之间不同
我试图测试日期向量的元素长度是否为0 使用base R可以很好地工作,但会以数字形式返回POSIXct: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
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"