직접 목록 (POSIXlt
객체)의 요소를 조작하고 있기 때문입니다. 인쇄되면 "실제"날짜로 표준화되지만 개별 요소에 액세스 할 때 여전히 정규화되지 않은 값을 갖습니다.
가 D < 고려 - as.POSIXlt를 ("1900-01-01") POSIXlt POSIXct 및 후면에 강요하는 것은 그것을 정규화 것을
> d <- as.POSIXlt("1900-01-01")
> dput(d)
structure(list(sec = 0, min = 0L, hour = 0L, mday = 1L, mon = 0L,
year = 0L, wday = 1L, yday = 0L, isdst = 0L), .Names = c("sec",
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
), class = c("POSIXlt", "POSIXt"))
> d$mon <- d$mon + 12
> dput(d)
structure(list(sec = 0, min = 0L, hour = 0L, mday = 1L, mon = 12,
year = 0L, wday = 1L, yday = 0L, isdst = 0L), .Names = c("sec",
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
), class = c("POSIXlt", "POSIXt"))
> d <- as.POSIXlt(as.POSIXct(d))
> dput(d)
structure(list(sec = 0, min = 0L, hour = 0L, mday = 1L, mon = 0L,
year = 1L, wday = 2L, yday = 0L, isdst = 0L), .Names = c("sec",
"min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"
), class = c("POSIXlt", "POSIXt"), tzone = c("", "PST", "PDT"
))
주 제공
dput(d)
d$mon <- d$mon + 12
dput(d)
d <- as.POSIXlt(as.POSIXct(d))
dput(d)
(년 1은 월, 0은 0)
그렇다면 왜이 작업을 원하니? 적절한시기에 수개월이 지나면 어떨까요? – blindjesse
왜냐하면'POSIXlt'은 S3 클래스이기 때문에 데이터 보호보다는 디스패치를 위해 더 많이 설계된 클래스 시스템입니다 (어떤 객체 지향 디자인과 달리). 즉, 클래스의 일부를 직접 조작 할 수 있습니다 (실제로는 목록). "유효하지 않은"오브젝트가 만들어 지더라도 마찬가지입니다. 12 개월 후에 날짜를 만드는 함수가 아니며 목록의'mon' 요소를 직접 가져 와서 12를 더합니다. 다른 말로하면, 클래스 전체에서 작업하지 않고 객체의 한 부분을 직접 변경하는 것입니다. 다른 접근법을 위해'lubridate' 패키지를보십시오. –