将列表名称分配给dataframe list元素

时间:2015-01-19 07:01:20

标签: r

我有一个数据框列表清单:

library(dplyr)
library(magrittr)

a <- list(first = data.frame(x=runif(1), y=runif(1)),
          second = data.frame(x=runif(5), y=runif(5)))
b <- list(first = data.frame(x=runif(1), y=runif(1)),
          second = data.frame(x=runif(5), y=runif(5)))
a <- a %>% set_names(1:length(a))
b <- b %>% set_names(1:length(b))
c <- list(a, b)
c <- c %>% set_names(1:length(c))

我想将两个级别的列表名称作为新列分配给数据帧,然后将它们绑定到一个数据帧中。所需的输出类似于:

  x    y   name1   name2
.23  .43       1       1
.23  .43       1       2
.23  .43       2       1
.23  .43       2       2

x和y的值不是点。我正在努力解决这个问题,因为lapply没有访问列表元素的名称。

感谢。

1 个答案:

答案 0 :(得分:2)

可能有帮助:

library(reshape2)
library(tidyr)
library(dplyr)
res <- melt(c) %>%
             group_by(variable) %>% 
             mutate(indx=row_number()) %>%
             spread(variable, value) %>% 
             ungroup() %>% 
             select(-indx)