将data.frame列表转换为单个data.frame结构
我正在尝试将包含多个数据帧的列表重新格式化为一个数据帧。我读过很多书,但找不到实现这一目标所需的具体synthax 我有一份清单:将data.frame列表转换为单个data.frame结构,r,list,R,List,我正在尝试将包含多个数据帧的列表重新格式化为一个数据帧。我读过很多书,但找不到实现这一目标所需的具体synthax 我有一份清单: list1 = list(df1 = data.frame(bread = c("sourdough","baguette","boule","multigrain"), cheese = c("parmigiano","cheddar",&quo
list1 = list(df1 = data.frame(bread = c("sourdough","baguette","boule","multigrain"), cheese = c("parmigiano","cheddar","mozzarella","stilton")),
df2 = data.frame(bread = c("toast","brioche","focaccia","whole wheat"), cheese = c("gorgonzola","camembert","gouda","feta")))
我要求数据框垂直堆叠,并添加一列,表示它们来自的列表元素名称,如以下示例所示:
df = data.frame(breads = c("sourdough","baguette","boule","multigrain","toast","brioche","focaccia","whole wheat"),
cheese = c("parmigiano","cheddar","mozzarella","stilton","gorgonzola","camembert","gouda","feta"),
factor = rep(c("df1","df2"),each = 4))
非常简单,但我无法理解它。您可以使用
do.call(rbind,list1)
bread cheese
df1.1 sourdough parmigiano
df1.2 baguette cheddar
df1.3 boule mozzarella
df1.4 multigrain stilton
df2.1 toast gorgonzola
df2.2 brioche camembert
df2.3 focaccia gouda
df2.4 whole wheat feta
编辑:
如果您想要显式的“From”col
new_df您可以尝试以下方法:
#Bind
DF <- do.call(rbind,list1)
#Create factor
DF$factor <- rownames(DF)
rownames(DF)<-NULL
DF$factor <- gsub("\\..*","",DF$factor)
DF
bread cheese factor
1 sourdough parmigiano df1
2 baguette cheddar df1
3 boule mozzarella df1
4 multigrain stilton df1
5 toast gorgonzola df2
6 brioche camembert df2
7 focaccia gouda df2
8 whole wheat feta df2
#绑定
这能回答你的问题吗?嗯……这似乎适用于我给出的示例……但不是我的原始数据集。一定有什么东西我错过了。这是我原始数据集的结构(只显示了第一个元素),它们是矩阵而不是data.frames,我想这就是它的区别所在<代码>11$1:num[1:1000,1:3]0.85 0.849 0.847 0.846 0.844…的列表attr(*,“dimnames”)=2个….$的列表:chr[1:1000]“1”“2”“3”“4”chr[1:3]“fit2”“lwr2”“upr2”
好的,我想我明白了。我想是因为它们是矩阵,所以不起作用。我做了lappy(list1,函数(x)as.data.frame(x))
然后使用了您的代码,它似乎起了作用。为了获得完全相同的结果,您可以将其缩短为lappy(list1,as.data.frame)
#Bind
DF <- do.call(rbind,list1)
#Create factor
DF$factor <- rownames(DF)
rownames(DF)<-NULL
DF$factor <- gsub("\\..*","",DF$factor)
DF
bread cheese factor
1 sourdough parmigiano df1
2 baguette cheddar df1
3 boule mozzarella df1
4 multigrain stilton df1
5 toast gorgonzola df2
6 brioche camembert df2
7 focaccia gouda df2
8 whole wheat feta df2