【问题标题】:Assign list name to dataframe list element将列表名称分配给数据框列表元素
【发布时间】:2015-01-19 07:01:20
【问题描述】:

我有一个数据框列表:

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 无法访问列表元素的名称。

谢谢。

【问题讨论】:

  • 在包含 %&gt;% 的行之后,我的代码产生了错误。 (我已经加载了dplyr)。我想你使用像magrittr这样的包?对于那些想要复制问题的人来说可能很高兴。
  • 不要使用 c 作为列表的名称。

标签: r


【解决方案1】:

这可能会有所帮助:

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

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2020-09-30
    • 1970-01-01
    • 2022-01-02
    • 2019-01-14
    • 1970-01-01
    • 2012-09-20
    • 2018-02-03
    • 2021-12-04
    相关资源
    最近更新 更多