大家好我正在使用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
元素的名称为a1
,a2
,a3
,a4
和a5
。当我合并所有元素时,我的问题就开始了,因为我无法在合并变量之间建立差异。例如,我申请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
的数据框区别开来,或者至少我想要一些能让我发挥作用的东西。谢谢你的帮助。
答案 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