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