我试图了解为什么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 解决方案,但其他包也会很有趣
建立在 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)