干净地将命名列表转换为data.fame(其中名称是日期)

时间:2013-11-02 18:21:01

标签: r dataframe

我是R的新手并尝试从命名列表中创建数据框:

> z <- list(2,4)
> names(z) <- c("2010-01-01", "2010-01-02")
> z
$`2010-01-01`
[1] 2

$`2010-01-02`
[1] 4

即。结果应该与它产生的结果相同:

> data.frame(dates=as.Date(c("2010-01-01", "2010-01-02")), val=c(2,4))
       dates val
1 2010-01-01   2
2 2010-01-02   4

你如何在R中干净利落地完成这项工作?

2 个答案:

答案 0 :(得分:1)

这是使用R基函数的一种方法

> x <- do.call(rbind, z)
> data.frame(dates=as.Date(rownames(x)), val=x[,1], row.names=NULL)
       dates val
1 2010-01-01   2
2 2010-01-02   4

使用plyr的ldply

> library(plyr)
> y <- ldply(z)
> transform(y, date=as.Date(.id), val=V1)[,-c(1,2)]
        date val
1 2010-01-01   2
2 2010-01-02   4

答案 1 :(得分:1)

> data.frame(dates=as.Date(names(z)),val=unlist(z),row.names=NULL)
       dates val
1 2010-01-01   2
2 2010-01-02   4