2014-10-29 1 views
0

변화 a를 POSIXlt 객체의 요소 순서와 보존 클래스

x <- "2012-10-07" 

내가 사용 %d/%m/%Y에 형식으로 변경해야

y <- strptime(x, format = "%Y-%m-%d") 

사용 POSIXlt로 변환 곳의 가정하자

z <- strftime(y, format = "%d/%m/%Y", tz = "GMT") 

그러나 개체를 문자로 만듭니다.

class(z) 
[1] "character" 

as.POSIXlt(z, format = "%d/%m/%Y", tz = "GMT") 

인쇄 된 결과

[1] "2012-10-07 GMT" 

이다 (그러나 %d/%m/%Y의 형식으로 기대 때).

z/POSIXctPOSIXlt에 객체를 변환하고 (인쇄) 순서 %d/%m/%Y을 보존 할 수있는 방법이 있나요? "time"객체가 일, 월, 년이 어디인지를 알기 때문에 다른 것들은 단지 (예쁜) 인쇄를위한 것일 뿐이니까요. 이 같은

+0

인쇄 방법이 마음에 들지 않으면 직접 작성할 수 있습니다. 나는이 질문을 정말로 이해하지 못한다. – Roland

+0

@Roland 질문을 약간 수정했습니다. 그래서 당신이 말하는 것은'as.POSIXlt'의 프린트는'% Y- % m- % d'이고 기본값은 다른 것의 커스텀 프린트 방법입니다. –

답변

1

뭔가 :

x <- "2012-10-07" 
y <- strptime(x, format = "%Y-%m-%d") 

class(y) <- c("EUtime", class(y)) 

print.EUtime <- function (x, format="%d/%m/%Y %H:%M:%S", ...) 
{ 
    max.print <- getOption("max.print", 9999L) 
    if (max.print < length(x)) { 
    print(format(x[seq_len(max.print)], format = format, usetz = TRUE), ...) 
    cat(" [ reached getOption(\"max.print\") -- omitted", 
     length(x) - max.print, "entries ]\n") 
    } 
    else print(format(x, format = format, usetz = TRUE), ...) 
    invisible(x) 
} 

y 
#[1] "07/10/2012 00:00:00 CEST" 

는 당신이 자정에만 출력이에게 날짜를 직접 수정할 수 있습니다 확신합니다.

관련 문제