Как создать двудольную сеть в R с помощью igraph или tnet
У меня есть список краев для сети с двумя режимами, подобный этому:
person Event
Amy football_game
Sam picnic
Bob art_show
Я хочу провести анализ этого в R, но, похоже, все, что я пытаюсь, терпит неудачу. Преобразование его в однорежимную сеть сталкивается с ограничениями памяти, и я не могу понять, как анализировать его как двудольный в igraph или tnet.
В игреbipartite.projection
дает мне всеFALSE
на объекте igraph, созданном с использованием
net <- graph.edgelist(myobject)
В tnet я не могу преобразовать сеть igraph в сеть tnet, и когда я пытаюсь использовать исходный фрейм данных, он отказывается из-за дубликатов в графе.
Так что ответы на любой из следующих вопросов будут очень признательны:
Как я могу использоватьbipartite.mapping
функционировать?Как мне ввести объект igraph в tnet?Если ничего не помогает, как мне ввести фрейм данных с дублирующимися ребрами в tnet?Извините, если это основные вопросы, но документации очень мало.
РЕДАКТИРОВАТЬПример:
edgelist <- read.table(text="Person Event
Amy football
Bob picnic
Sam artshow",
header=TRUE)
edgelist <- as.matrix(edgelist)
## Igraph Issues
igraph <- graph.edgelist(edgelist)
typevector <- bipartite.projection(igraph)
# gets all FALSE
edgelist2 <- get.edgelist(igraph)
typevector <- bipartite.projection(edgelist2)
# same thing
## tnet issues
tnet <- as.tnet(edgelist)
# gives error: "There are duplicate events in the edgelist"
tnet <- as.tnet(edgelist2)
clusterMat <- clustering_local_tm(tnet)
# gives error: "max not meaningful for factors"
onemode <- projecting_tm(tnet, method="Newman")
# gives error: "arguments must have same length"