Почему «rbind.data.frame» конвертирует дату в число? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь понять, почему rbind.data.frame конвертирует мои даты в числовой формат и как мне это исправить.Предположим, у меня есть следующее:

v <- list(
          row1=list(col1 = as.Date("2011-01-23"), col2="A"), 
          row2=list(col1 = as.Date("2012-03-03"), col2="B"))

Теперь я пытаюсь сделать:

df <- do.call(rbind.data.frame, v)
str(df)
'data.frame':   2 obs. of  2 variables:
 $ col1: num  14997 15402
 $ col2: Factor w/ 2 levels "A","B": 1 2

Почему col1 стало числом?Как это исправить, чтобы оно стало Date полем в df.

ПРИМЕЧАНИЕ. Я бы предпочел нативное решение R, но другие пакеты было бы интересно посмотреть

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Построение на 42-х комментариях Вместо того, чтобы использовать список на «внутреннем» уровне построения, используйте data.frame , для этого примера вы можете конвертировать внутренний список в data.frame,и тогда rbind работает как положено.

> d = do.call(rbind, lapply(v, as.data.frame))
> str(d)
'data.frame':   2 obs. of  2 variables:
 $ col1: Date, format: "2011-01-23" "2012-03-03"
 $ col2: Factor w/ 2 levels "A","B": 1 2
0 голосов
/ 01 марта 2019

Использование dplyr

> library(dplyr)
> df <- bind_rows(v)
> df
# A tibble: 2 x 2
  col1       col2 
  <date>     <chr>
1 2011-01-23 A    
2 2012-03-03 B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...