library(sna)
library(proxy)
library(igraph)
rawdataframe<-read.csv(file = "~/Desktop/SNA/Techniques/LinkPrediction/Sample.csv" ,fill=TRUE,header=FALSE,sep=",")
rawgraphdata<- graph.data.frame(rawdataframe,directed=TRUE,vertices=NULL)
adj<-get.adjacency(rawgraphdata)
g1<-as.matrix(adj)
adjmatrix<-simil(g1, method ="Jaccard", diag = TRUE, upper = TRUE ,pairwise = TRUE, by_rows = TRUE, convert_distances = TRUE, auto_convert_data_frames = TRUE)
adjmatrix[adjmatrix >= 0.75]<-1
adjmatrix[adjmatrix <= 0.75]<-0
我使用过simil代理措施,结果如下所示。
输出如下:
2 159 3 5 858 100 114 171
2 0 0 0 0 0 0 0 0
159 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
858 0 0 0 0 0 0 0 0
100 0 0 0 0 0 0 1 1
114 0 0 0 0 0 1 0 1
171 0 0 0 0 0 1 1 0
我想提取(行,列)对,其中value对应于1。
答案 0 :(得分:0)
正如NicE所指出的,您可以将which
与arr.ind=1
一起使用,它会为您提供行索引和列索引;
例如,使用apply
收集行名和列名:
> apply(which (as.matrix(adjmatrix)==1,arr.ind=T), 2, function(x)rownames(as.matrix(adjmatrix))[x])
row col
[1,] "114" "100"
[2,] "171" "100"
[3,] "100" "114"
[4,] "171" "114"
[5,] "100" "171"
[6,] "114" "171"
这将适用于您的情况,因为在邻接矩阵中,行名和列名应该相同。