Создание подграфа с использованием двухсторонней сети
У меня есть набор фильмов и актеров - каждая строка представляет собой комбинацию двух. Я хочу создать график, в котором фильмы связаны, когда они делят двух или более актеров. Список актеров сохраняется в переменной ctors.2000.
Я уже провел такой анализ, принимая актеров за вершины. Теперь я хочу сделать это наоборот. Однако, если я изменю данные с актеров на фильмы и возьму proj1 команды bipartite.projection, индуцированный подграф возвращает пустой граф.
library(igraph)
all.actors <- dt.movie.actor[, list(name=unique(actor), type=TRUE)]
all.movies <- dt.movie.actor[, list(name=unique(movie), type=FALSE)]
all.vertices <- rbind(all.actors, all.movies)
g.movie.actor <- graph.data.frame(dt.movie.actor[, list(movie, actor)],
directed=FALSE,
vertices=all.vertices)
g.actors <- bipartite.projection(g.movie.actor)$proj2
g.actors <- induced.subgraph(g.actors, vids = V(g.actors)$name %in% actors.2000)
Мой код для графа с фильмами в виде вершин выглядит следующим образом. Сначала я смотрю фильмы, в которых участвовали актеры. Затем я использую команду двудольного проецирования, чтобы построить сеть только из фильмов. Затем я использую команду induce.subgraph, чтобы отфильтровать только те фильмы, которые находятся в векторе movies.actors.2000.
actors.2000 <- dt.awards.actor[award == "72nd_Annual_Academy_Awards__The_2000",
actor]
movies.actors.2000 <- dt.movie.actor[actor %in% actors.2000, list(unique(movie))]
movies.actors.2000
g.movies <- bipartite.projection(g.movie.actor)$proj1
g.movies <- induced.subgraph(g.movies, vids = V(g.movies)$name %in% movies.actors.2000)
summary(g.movies)
Однако, когда я использую команду summary, она возвращает пустой график. Я понятия не имею, что я делаю неправильно.
Кто-нибудь, кто мог бы помочь мне?