[r] unlist ()가 R에서 날짜를 죽이는 이유

날짜 목록을 삭제하면 다시 숫자로 바뀝니다. 정상인가요? 다른 이름으로 다시 적용하는 것 이외의 해결 방법은 무엇입니까?

> dd <- as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))
> class(dd)
[1] "Date"
> unlist(dd)
[1] "2013-01-01" "2013-02-01" "2013-03-01"
> list(dd)
[[1]]
[1] "2013-01-01" "2013-02-01" "2013-03-01"

> unlist(list(dd))
[1] 15706 15737 15765

이것은 버그입니까?



답변

do.call목록으로 “무언가를 수행”하는 편리한 기능입니다. 우리의 경우에는 c. 그것은에 드문 일이 아니에요 cbind또는 rbind하나의 큰 data.frame으로 목록에서 data.frames.

여기서 우리가하는 일은 실제로 dd목록의 요소를 연결하는 것입니다 . 이것은 c(dd[[1]], dd[[2]]). 참고 c함수로 또는 문자로 제공 할 수 있습니다.

> dd <- list(dd, dd)
> (d <- do.call("c", dd))
[1] "2013-01-01" "2013-02-01" "2013-03-01" "2013-01-01" "2013-02-01" "2013-03-01"
> class(d) # proof that class is still Date
[1] "Date"


답변

또는 purrr 을 사용하여 날짜 목록을 벡터 보존 유형으로 평면화합니다.

list(as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))) %>% purrr::reduce(c)

결과

[1] "2013-01-01" "2013-02-01" "2013-03-01"


답변