Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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

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 将数据帧列表转换为一个数据帧,并在额外列中使用df名称_R_List_Dataframe_Stack_Rbind - Fatal编程技术网

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')