Выявление клики в R

У меня есть такой кадр данных:

1 2
2 3
4 5
....

Теперь я строю этот график в R, используя библиотеку igraph, используя следующий код:

wt=read.table("NP7.txt")
wt1=matrix(nrow=nrow(wt), ncol=2)     
wt1=data.frame(wt1)
wt1[,1:2]=wt[,1:2]      
write.table(wt1,"test.txt")
library(igraph)
wt=read.table("test.txt")
wg7 <- graph.edgelist(cbind(as.character(wt$X1), as.character(wt$X2)),
                 directed=F)
sum(clusters(wg7)$csize>2)        
plot(wg7)
a <- largest.clique(wg7)

Теперь, запустив этот код, я получаю график графика и значения, которые образуют самую большую клику. Но, если я хочу сюжет этой самой большой клики, как мне это сделать? Спасибо!

1 ответ

Решение

Вот пример:

library(igraph)

# for reproducibility of graphs plots (plot.igraph uses random numbers)
set.seed(123)

# create an example graph
D <- read.table(header=T,text=
'from to
A B
A C
C D
C F
C E
D E
D F
E F')

g1 <- graph.data.frame(D,directed=F)

# plot the original graph
plot(g1)

# find all the largest cliques (returns a list of vector of vertiex ids)
a <- largest.cliques(g1)

# let's just take the first of the largest cliques
# (in this case there's just one clique)
clique1 <- a[[1]]

# subset the original graph by passing the clique vertices
g2 <- induced.subgraph(graph=g1,vids=clique1)

# plot the clique
plot(g2)

Участок 1 (исходный график):

График 1

Участок 2 (клика):

Клика


РЕДАКТИРОВАТЬ:

Как правильно указал @GaborCsardi, нет необходимости в подгруппе графа, поскольку клика является полным графом. Это, вероятно, более эффективно, чем induced.subgraph:

g2 <- graph.full(length(clique1))
V(g2)$name <- V(g1)$name[clique1]
Другие вопросы по тегам