2016-11-02 6 views
-1

목록이 redDressTweetsstatus입니다. status은 필드가 created 인 클래스입니다. 트윗이 게시 된 시간 목록을 만들려고합니다.목록을 벡터로 변환 할 때 POSIXct가 숫자로 변환되는 이유

[1] 1478044029 1477954062 1477909847 1477887746 1477832560 1477640940 1477640939 
[8] 1477628031 1477540826 

그러나 redDressTweets[[1]]$created의 클래스가 "POSIXct" "POSIXt"입니다 : 여기에 내가 숫자의 벡터가

times <- unlist(lapply(redDressTweets, function(tweet) {tweet$created })) 

에게 출력을 할 수 있습니다 노력하고있어 방법이다.

왜 이런 일이 일어나고 POSIXct를 숫자로 변환하지 못하게합니까?

[편집]

왜 지구에이을 downvoted했다?

답변

4

이 같은 더 쉽게 재현 할 수 있습니다 :

x <- list(as.POSIXct("2016-11-02"), as.POSIXct("2016-11-03")) 
unlist(x) 
#[1] 1478041200 1478127600 

unlist 목록 내부의 값을 결합합니다. POSIXct 변수의 내부 표현은 숫자 값입니다. 속성으로 인해 변수는 POSIXct이고 가장 중요한 것은 class 속성입니다. 목록은 모든 종류의 객체를 담을 수 있습니다. 문서는 말한다 : 목록 요소 목록에서 제외하는 동안 일반 모드로 강제하고, 그래서 결과는 종종 문자 벡터로 끝나는 수

. 벡터는 계층 NULL의 구성 요소의 가장 높은 유형 < 원시 < 논리적 < 정수 < 더블 < 복잡한 < 문자 < 목록에 강제 될 것이다 < 표현 : pairlists이 목록으로 처리됩니다.

"공통 모드"는 일반 클래스가 아니라는 것을 유의하십시오. 클래스는 어떤 것도 될 수 있고 모든 종류의 기본 구조를 적용 할 수 있기 때문에 (예 : 동일한 클래스의 두 객체를 의미있는 방식으로 결합 할 수 없을 수도 있음) unlist은 모든 속성을 제거합니다 (list 제외). 모든 요소 요인). factor 값과 같은 POSIXct 값을 처리 할 수는 있지만 이는 그렇지 않습니다 (성능에 영향을 미칠 수 있음).

이를 피하지만, 쉽게 고칠 수 :

y <- unlist(x) 
attributes(y) <- attributes(x[[1]]) 
y 
#[1] "2016-11-02 CET" "2016-11-03 CET" 

은 분명히이 모든 목록 요소가 같은 시간대 속성이 있다고 가정합니다.