Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧列表转换为具有id列的单个数据帧_R_List_Dataframe - Fatal编程技术网

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

R 将数据帧列表转换为具有id列的单个数据帧,r,list,dataframe,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 我需要的东西如下所示。基本上,我想将它们组合成一个数据帧 df Col Var1 Freq ColA asgfg 2.1 ColA dds 2.1 ColA dfg 4

我有一个如下的清单

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
我需要的东西如下所示。基本上,我想将它们组合成一个数据帧

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

一个选项是
bind_行

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

或使用
base R

out <- do.call(rbind, Map(cbind, Col = names(p1), p1))
row.names(out) <- NULL

out我们可以使用
数据。表
包:

data.table::rbindlist(p1,idcol=“col”)
或使用
purrr

purrr::map_df(p1,I,.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

使用

Perfect中提供的数据。但我收到错误消息
警告消息:1:在绑定行中(x,.id):不相等的因子级别:强制到字符2:在绑定行中(x,.id):绑定字符和因子向量,强制到字符向量3:在绑定行中(x,.id):绑定字符和因子向量,强制转换为字符向量
@DevP这是一条警告消息。没什么好担心的。当您有
因子
列时发生。如果是
字符
列,则不存在系数不相等的问题。请检查my中的
数据
post@DevP这不是一条错误消息。错误不会给出输出。是否有方法使用
plyr::rbind.fill(p1)
获取
col
列?
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")))