为什么“ rbind.data.frame”将日期转换为数字?

时间:2019-03-01 18:59:23

标签: r dataframe

我试图了解为什么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 :(得分:2)

在本例中以42-的注释Rather than using list in the "inner" level of construction, use 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

答案 1 :(得分:1)

使用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