在R中更改日期格式,保留其模式,类和类型

时间:2016-03-21 08:19:24

标签: r date

我写了以下代码来更改日期格式:

m <- as.Date("30-sep-15","%d-%b-%y")
l <- format(m,"%Y%m%d")

结果:

l is 20150930

现在,当我检查结果对象的类时,就是l

class(l)
"character"

类和模式更改为字符。 我们可以在此对象上保留Date类,并仍然以下列格式显示此对象:20150930 ??

1 个答案:

答案 0 :(得分:5)

您可以使用关联的print方法定义自己的S3类:

m <- as.Date("30-sep-15","%d-%b-%y")
m

prettyDate <- function(x) {
  if (!inherits(x, "Date")) stop("Only objects of class 'Date' can be prettyDates.")
  class(x) <- c("prettyDate", class(x))
  x
}

m <- prettyDate(m)

print.prettyDate <- function(x, ...) {
  stopifnot(inherits(x, "Date"))
  print.default(format(x, "%Y%m%d"))
}

m
#[1] "20150930"
class(m)
#[1] "prettyDate" "Date" 

如果您还希望在data.frames中打印格式,则还需要定义format方法。

如果没有其他类的方法,

Date方法仍将用于该对象:

as.POSIXct(m)
#[1] "2015-09-30 02:00:00 CEST"