我想在向量mydates
中转换实际日期(Sys.Date()
(中的NA,如果值是日期,则不做任何更改,但我无法成功使用dplyr
包的ifelse
或if_else
。在我的例子中:
# Package
library(dplyr)
# My vector
mydates<-c(NA,NA,NA,"2019-03-14","2020-05-01",NA,NA)
# Using ifelse
mydatescorr1<-ifelse(is.na(mydates)==TRUE,Sys.Date(),mydates)
mydatescorr1
[1] "18771" "18771" "18771" "2019-03-14" "2020-05-01" "18771" "18771"
#Using if_else
mydatescorr2<-if_else(is.na(mydates)==TRUE,Sys.Date(),mydates)
mydatescorr2
Erro: `false` must be a `Date` object, not a character vector.
求你了,有人帮我修吗?
mydates
是一个字符向量(class(mydates)
(,因此当您从其他部分按原样返回mydates
时,您返回的是字符对象,而不是日期。你可以使用-
dplyr::if_else(is.na(mydates), Sys.Date(), as.Date(mydates))
或不带if_else
-
mydates <- as.Date(mydates)
mydates[is.na(mydates)] <- Sys.Date()
怎么样
tidyr::replace_na(as.Date(mydates), Sys.Date())
(您仍然需要先将mydates
转换为Date
类型。(如果您愿意,可以通过管道传输:
mydates %>% as.Date() %>% replace_na(Sys.Date())