【发布时间】:2015-08-31 05:23:34
【问题描述】:
我正在尝试从我的数据创建有价值的二分投影,如下所示:
Name rid
Emile 17560
Lou 11800
Luther 11800
Tot 11800
Phineas 11800
Phineas 13580
Calvin 13580
Calvin 11800
Les 11800
Jeff 11800
Sonny 13580
Leon 13580
Red 13580
我把上面的数据导入了,叫data1
然后我执行以下操作:
##create graph object from data1
graph1 <- graph.data.frame(data1)
#check if it is bipartite
is.bipartite(graph1)
FALSE
##convert to bipartite graph
V(graph1)$type <- V(graph1)$name %in% data1[,1]
##check again if it is bipartite
is.bipartite(graph1)
TRUE
##create biparite projection
##the multiplicity argument is suppose to count the number of
##edges
proj<-bipartite.projection(graph1, V(graph1)$type,multiplicity = TRUE)
##get adjacency matrix from second projection
get.adjacency(proj$proj2)
我得到以下输出
11 x 11 sparse Matrix of class "dgCMatrix"
[[ suppressing 11 column names ‘Emile ’, ‘Lou ’, ‘Luther ’ ... ]]
Emile . . . . . . . . . . .
Lou . . 1 1 1 . 1 1 1 . .
Luther . 1 . 1 1 . 1 1 1 . .
Tot . 1 1 . 1 . 1 1 1 . .
Phineas . 1 1 1 . . 1 1 1 . .
Phineas . . . . . . 1 . . 1 1
Calvin . 1 1 1 1 1 . 1 1 1 1
Les . 1 1 1 1 . 1 . 1 . .
Jeff . 1 1 1 1 . 1 1 . . .
Sonny . . . . . 1 1 . . . 1
Leon . . . . . 1 1 . . 1 .
和
3 x 3 sparse Matrix of class "dgCMatrix"
17560 11800 13580
17560 . . .
11800 . . 1
13580 . 1 .
Phineas 和 Calvin 通过 ***rid***s 13580 和 11800 有 2 条边,Phineas 出现了两次。而“摆脱”投影图仅显示 13580 和 11800 之间的 1 条边。“名称”图显示了 Phineas 两次。
感谢任何修改此代码以获得有价值的投影和邻接矩阵的建议。谢谢!
编辑 #1:Phineas 出现了两次,原因是某种格式问题,其中两个“Phinease-s”被识别为单独的名称。但是,解决这个问题仍然不能解决主要问题。输出仍然只给出 Phineas 和 Calvin 之间以及 13580 和 11800 之间的 1 个边缘。
编辑#2:会话信息结果
R version 3.1.0 (2014-04-10)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] igraph_1.0.1
loaded via a namespace (and not attached):
[1] grid_3.1.0 lattice_0.20-29 magrittr_1.5 Matrix_1.1-3 tools_3.1.0
\
编辑#3
Desired output
3 x 3 sparse Matrix of class "dgCMatrix"
17560 11800 13580
17560 . . .
11800 . . 2
13580 . 2 .
11 x 11 sparse Matrix of class "dgCMatrix"
[[ suppressing 11 column names ‘Emile ’, ‘Lou ’, ‘Luther ’ ... ]]
Emile . . . . . . . . . . .
Lou . . 1 1 1 . 1 1 1 . .
Luther . 1 . 1 1 . 1 1 1 . .
Tot . 1 1 . 1 . 1 1 1 . .
Phineas . 1 1 1 . 2 1 1 1 1
Calvin . 1 1 1 2 1 . 1 1 1 1
Les . 1 1 1 1 . 1 . 1 . .
Jeff . 1 1 1 1 . 1 1 . . .
Sonny . . . . . 1 1 . . . 1
Leon . . . . . 1 1 . . 1 .
【问题讨论】:
-
这不是
graph.data.frame(...)的工作方式。试试plot(graph1)。这是你所期望的吗? -
是的,plot(graph1) 给了我预期的图表,在名称和rids 之间有正确的边。不确定为什么 graph.data.frame(...) 不起作用?