将数据框列表转换为具有 id 列的单个数据框

Dev*_*v P 2 r list dataframe

我有一个如下所示的列表。

p1

$ColA
     Var1 Freq
1   asgfg  2.1
2     dds  2.1
3     dfg  4.3
4     dfh  2.1

$ColB
  Var1 Freq
1    A 44.7
2    B 55.3
Run Code Online (Sandbox Code Playgroud)

我需要的如下所示。基本上,我想将它们组合成一个数据框。

df

Col      Var1   Freq
ColA     asgfg  2.1
ColA     dds    2.1
ColA     dfg    4.3
ColA     dfh    2.1
ColB      A     44.7
ColC      B     55.3
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

一种选择是bind_rows

library(dplyr)
bind_rows(p1, .id = 'Col')
#   Col  Var1 Freq
#1 ColA asgfg  2.1
#2 ColA   dds  2.1
#3 ColA   dfg  4.3
#4 ColA   dfh  2.1
#5 ColB     A 44.7
#6 ColB     B 55.3
Run Code Online (Sandbox Code Playgroud)

或者与base R

out <- do.call(rbind, Map(cbind, Col = names(p1), p1))
row.names(out) <- NULL
Run Code Online (Sandbox Code Playgroud)

数据

p1 <- list(ColA = structure(list(Var1 = c("asgfg", "dds", "dfg", "dfh"
), Freq = c(2.1, 2.1, 4.3, 2.1)), class = "data.frame", row.names = c("1", 
"2", "3", "4")), ColB = structure(list(Var1 = c("A", "B"), Freq = c(44.7, 
55.3)), class = "data.frame", row.names = c("1", "2")))
Run Code Online (Sandbox Code Playgroud)