[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"