0

我是 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 中干净地做到这一点?

4

2 回答 2

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

ldply从 plyr使用

> 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
于 2013-11-02T18:27:04.423 回答
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
于 2013-11-02T18:27:13.687 回答