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

Den*_*nis 5 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"))
Run Code Online (Sandbox Code Playgroud)

现在我尝试做:

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
Run Code Online (Sandbox Code Playgroud)

为什么col1变成了num?我该如何修复它,使其正确Date成为df.

注意:我更喜欢原生 R 解决方案,但其他包也会很有趣

use*_*650 3

建立在 42- 的评论的基础上,不要在“内部”构建级别中使用 list ,而是使用 data.frame,对于本示例,您可以将内部列表转换为 a 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
Run Code Online (Sandbox Code Playgroud)