我有一个图表,其中有多个边连接两个相同的顶点但具有不同的属性。例如,我有从v1到v2的三条边,一条具有属性A,另一条带有B,最后一条带有A.边缘列表将是这样的
from to Att
1 2 A
1 2 B
1 2 A
3 4 C
1 3 A
有没有办法简化边缘列表或图表,因此只有1到2之间的一条边,att = A,B? 我试过
g<-graph_from_edgelist(M[,-3])
E(g)$Att<-M[,3]
g<-simplify(g,remove.multiple = TRUE,remove.loops = TRUE,edge.attr.comb=toString)
但问题是它重复属性A.当我尝试表格边缘时,我得到
E(g)$Att
"A,B,A" "A" "C"
我想得到&#34; A,B&#34; &#34; C&#34;,&#34; A&#34;。起初我想合并边缘列表以获得
from to Att
1 2 A,B
3 4 C
1 3 A
但我无法找到答案,(我知道如何使用包splitstackshape和csplit命令将其拆分,但奇怪的是它没有执行相反操作的功能)。
提前致谢,对不起,如果我的英语不是最好的,不是母语人士
答案 0 :(得分:2)
您可以使用aggregate
## Your data
EL = read.table(text="from to Att
1 2 A
1 2 B
1 2 A
3 4 C
1 3 A",
header=TRUE)
aggregate(EL$Att, EL[,1:2], function(x) paste(unique(x), collapse=","))
from to x
1 1 2 A,B
2 1 3 A
3 3 4 C
答案 1 :(得分:0)