在RBGL中的kCliques之后构造一个逐个元素的矩阵

时间:2015-05-14 19:00:32

标签: r matrix packages igraph

kCliques中运行RBGL后,我有一个由派系及其成员组成的列表。

我希望从kCliques创建的列表对象构建一个逐个clique矩阵。

举个例子:

con <- file(system.file("XML/snacliqueex.gxl",package="RBGL"))
coex <- fromGXL(con)
close(con)
kcl <- kCliques(coex)

导致

kcl<-structure(list(`1-cliques` = list(c("1", "2", "3"), c("2", "4"), 
    c("3", "5"), c("4", "6"), c("5", "6")), `2-cliques` = list(
    c("1", "2", "3", "4", "5"), c("2", "3", "4", "5", "6")), 
    `3-cliques` = list(c("1", "2", "3", "4", "5", "6"))), 
    .Names = c("1-cliques", "2-cliques", "3-cliques"))

kcl是一个列表,其中元素是表示clique成员的字符向量。 我希望构建一个逐个clique矩阵,其中cell i,j表示节点i是否是clique j的成员。

1 个答案:

答案 0 :(得分:0)

以下是一些应该有效的转换

#remove one level of nesting
x <- do.call("c", kcl);
#assign number to each cliqeq
xx <- do.call("rbind", Map(function(x,y) data.frame(x,y), x, seq_along(x))); 
#track participation
xtabs(~x+y, xx)

给出了

   y
x   1 2 3 4 5 6 7 8
  1 1 0 0 0 0 1 0 1
  2 1 1 0 0 0 1 1 1
  3 1 0 1 0 0 1 1 1
  4 0 1 0 1 0 1 1 1
  5 0 0 1 0 1 1 1 1
  6 0 0 0 1 1 0 1 1