在 RBGL 中的 kCliques 之后构造一个 actor-by-clique 矩阵

Construct an actor-by-clique matrix after kCliques in RBGL

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

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

举个例子:

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 是一个列表,其中元素是表示集团成员的字符向量。 我希望构建一个成员矩阵,其中单元格 i、j 指示节点 i 是否是集团 j 的成员。

这里有一些应该有效的转换

#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