R 将数据帧列表转换为一个数据帧,并在额外列中使用df名称
我想将数据帧列表转换为一个大数据帧。问题是,我只有列表,没有单独的数据帧。新数据框中应包含一个包含数据框名称但不包含行名称的附加列 以下是我尝试过的:R 将数据帧列表转换为一个数据帧,并在额外列中使用df名称,r,list,dataframe,stack,rbind,R,List,Dataframe,Stack,Rbind,我想将数据帧列表转换为一个大数据帧。问题是,我只有列表,没有单独的数据帧。新数据框中应包含一个包含数据框名称但不包含行名称的附加列 以下是我尝试过的: d1 <- data.frame(x = c(1.1,2.0,3.5), y = c(4.1,5.1,6.3)) d2 <- data.frame(x = c(3.3,2.7,1.9,2.9,1.9),y = c(6.4,5.2,2.4,3.0,5.1)) d3 <- data.frame(x = c(3.4,2.7,1.8,0
d1 <- data.frame(x = c(1.1,2.0,3.5), y = c(4.1,5.1,6.3))
d2 <- data.frame(x = c(3.3,2.7,1.9,2.9,1.9),y = c(6.4,5.2,2.4,3.0,5.1))
d3 <- data.frame(x = c(3.4,2.7,1.8,0.2),y = c(6.2,5.0,4.1,0.5))
my.list <- list(green = d1, blue = d2, yellow = d3)
d1我们可以使用Map
来执行此操作
do.call(rbind, unname(Map(cbind, colour = names(my.list), my.list)))
结果:
do.call(rbind, unname(Map(cbind, colour = names(my.list), my.list)))
colour x y
1 green 1.1 4.1
2 green 2.0 5.1
3 green 3.5 6.3
4 blue 3.3 6.4
5 blue 2.7 5.2
6 blue 1.9 2.4
7 blue 2.9 3.0
8 blue 1.9 5.1
9 yellow 3.4 6.2
10 yellow 2.7 5.0
11 yellow 1.8 4.1
12 yellow 0.2 0.5
或者如果我们使用的是dplyr
,那么bind\u rows
可以选择.id
library(dplyr)
bind_rows(my.list, .id = 'colour')
谢谢,它很有效。如何删除行名称?@yPennylane更新了post@Sotos:这不是重复的,因为我想从列表中创建数据帧。在您的相关问题中,起点是数据帧,而不是列表!好啊但akrun提供的解决方案非常简单有效……dupe中也存在同样的解决方案。读一读,你会发现很多简单的答案。没有发现什么东西和当有人指出问题是重复的时候抗议是有区别的。下一个搜索的人会找到你的问题和副本的链接,所有答案都在那里。每个人都赢了。你正在将几个data.frames组合成一个,这正是另一个问题。没有问题,因为你没有建立这种联系,其他人可以帮助你,并指出另一个问题(他们做了)。这里没有必要重复所有可能的答案,但是我们应该把你的问题和那个联系起来。这意味着我们可以将所有答案保存在一个地方并保持最新。未来的读者仍然可以通过你的措辞找到这个问题,这将为他们指出正确的重复链接。没有答案是“隐藏的”。
do.call(rbind, unname(Map(cbind, colour = names(my.list), my.list)))
do.call(rbind, unname(Map(cbind, colour = names(my.list), my.list)))
colour x y
1 green 1.1 4.1
2 green 2.0 5.1
3 green 3.5 6.3
4 blue 3.3 6.4
5 blue 2.7 5.2
6 blue 1.9 2.4
7 blue 2.9 3.0
8 blue 1.9 5.1
9 yellow 3.4 6.2
10 yellow 2.7 5.0
11 yellow 1.8 4.1
12 yellow 0.2 0.5
library(dplyr)
bind_rows(my.list, .id = 'colour')