R无限期日期与文本混合

R无限期日期与文本混合,r,date,infinity,rpostgresql,R,Date,Infinity,Rpostgresql,我试图用一种与中描述的无限日期值相对应的方式来解释PostgreSQL中的无限日期。但是,我无法让代码正常工作 df <- data.frame(dates = c("2012-08-06", "2014-05-05", 'infinity', '-infinity',as.character(Sys.Date()))) convertime <- function(x){ time <- ifelse( x == 'infinity',

我试图用一种与中描述的无限日期值相对应的方式来解释PostgreSQL中的无限日期。但是,我无法让代码正常工作

df <- data.frame(dates = c("2012-08-06", "2014-05-05", 'infinity', '-infinity',as.character(Sys.Date())))

convertime <- function(x){
  time <- ifelse(
            x == 'infinity', 
              as.POSIXct(Inf, origin="1970-01-01"),
          ifelse(
            x == '-infinity', 
              as.POSIXct(-Inf, origin="1970-01-01"),
              as.POSIXct(x)
              )
          )
  return(time)
}
df$time <- convertime(df$dates)

有什么想法吗?

ifelse
构造了它的每一个可能的值,并且它以.POSIXct(“无穷大”)的形式出现在

相反,试试看

converttime <- function(x,o="1970-01-01",posinf="infinity",neginf="-infinity"){
  xc <- x
  xc[x%in%c(posinf,neginf)] <- NA

  d            <- as.POSIXct(xc,   origin=o)
  d[x==posinf] <- as.POSIXct(Inf,  origin=o)
  d[x==neginf] <- as.POSIXct(-Inf, origin=o)

  d
}

d <- converttime(df$dates)
d[3] > d[4] # TRUE
转换时间
converttime <- function(x,o="1970-01-01",posinf="infinity",neginf="-infinity"){
  xc <- x
  xc[x%in%c(posinf,neginf)] <- NA

  d            <- as.POSIXct(xc,   origin=o)
  d[x==posinf] <- as.POSIXct(Inf,  origin=o)
  d[x==neginf] <- as.POSIXct(-Inf, origin=o)

  d
}

d <- converttime(df$dates)
d[3] > d[4] # TRUE