考虑到合并变量的不同名称,如何合并R中列表中的所有元素

时间:2013-11-09 17:19:30

标签: r

大家好我正在使用R中的数据框列表,它们具有相同的变量名称。我的列表的结构是下一个,我只包含五个元素以使其可重现但我可以在列表中有超过20个元素:

list

$a1 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A

$a2 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A

$a3 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B

$a4 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B
00009   C

$a5 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B
00009   C
00010   D

元素的名称为a1a2a3a4a5。当我合并所有元素时,我的问题就开始了,因为我无法在合并变量之间建立差异。例如,我申请list下一个代码来合并它: Merged=Reduce(function(x, y) merge(x, y,all.x=T,by=1),list)我得到Merged

ID     G.x  G.y G.x G.y G
00001   A   A   A   A   A
00002   A   A   A   A   A
00003   B   B   B   B   B
00004   C   C   C   C   C
00005   D   D   D   D   D
00006   A   A   A   A   A

这个警告:

Warnings:
1: In merge.data.frame(x, y, all.x = T, by = 1) :
  column names ‘G.x’, ‘G.y’ are duplicated in the result
2: In merge.data.frame(x, y, all.x = T, by = 1) :
  column names ‘G.x’, ‘G.y’ are duplicated in the result

合并很好,但我无法区分合并变量,因为它们具有相同的名称。我想区分它们,例如第一个g.x是来自a1的群组,第一个g.y是来自a2的群组,第二个g.x是来自{{1}的群组},第二个a3是来自g.y的群组,而a4是来自g的群组。我想区分a5考虑它所来的元素,我想要一个像这样的结构:

g

显然,我可以与每个 ID G.1 G.2 G.3 G.4 G.5 00001 A A A A A 00002 A A A A A 00003 B B B B B 00004 C C C C C 00005 D D D D D 00006 A A A A A 的数据框区别开来,或者至少我想要一些能让我发挥作用的东西。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

setNames对此非常方便......

setNames( Merged , c( "ID" , names( list ) ) )
#     ID a1 a2 a3 a4 a5
#1 00001  A  A  A  A  A
#2 00002  A  A  A  A  A
#3 00003  B  B  B  B  B
#4 00004  C  C  C  C  C
#5 00005  D  D  D  D  D
#6 00006  A  A  A  A  A