在 R 中查找 igraph 网络中节点之间的连接数
Find number of connections between nodes in igraph network in R
我创建了一个具有以下边的无向 igraph
A--A
、A--B
、B--A
、C--D
、A--C
和A--B
library(igraph)
my_data = data.frame(id1=c("A","A","B","C","A","A"),id2=c("A","B","A","D","C","B"))
g = graph.data.frame(my_data,directed=F)
我想要一个输出,以便它列出所有唯一边和每条边的计数。以下是基于上图的示例。
Column1 Column2 Column3
A A 1
A B 3
A C 1
C D 1
想通了。使用以下代码获取输出。
library(igraph)
require(splitstackshape)
require(data.table)
my_data = data.frame(id1=c("A","B","C","A","A"),id2=c("B","A","D","C","B"))
g = graph.data.frame(my_data,directed=F)
edge=as_ids(E(g))
edge=as.data.frame(edge)
split = as.data.table(cSplit(edge,"edge","|"))
split[,':='(dummy=1,
key = paste(edge_1,edge_2,sep="_"))]
split = unique(split[,.(edge_1,edge_2,sum(dummy)),by=key])[,2:4,with=F]
split
# A B 3
# C D 1
# A C 1
你可以这样做,
table(vapply(paste(my_data$id1, my_data$id2), function(i) paste(sort(strsplit(i, ' ')[[1]]), collapse=' '), ' '))
#A A A B A C C D
# 1 3 1 1
我创建了一个具有以下边的无向 igraph
A--A
、A--B
、B--A
、C--D
、A--C
和A--B
library(igraph)
my_data = data.frame(id1=c("A","A","B","C","A","A"),id2=c("A","B","A","D","C","B"))
g = graph.data.frame(my_data,directed=F)
我想要一个输出,以便它列出所有唯一边和每条边的计数。以下是基于上图的示例。
Column1 Column2 Column3
A A 1
A B 3
A C 1
C D 1
想通了。使用以下代码获取输出。
library(igraph)
require(splitstackshape)
require(data.table)
my_data = data.frame(id1=c("A","B","C","A","A"),id2=c("B","A","D","C","B"))
g = graph.data.frame(my_data,directed=F)
edge=as_ids(E(g))
edge=as.data.frame(edge)
split = as.data.table(cSplit(edge,"edge","|"))
split[,':='(dummy=1,
key = paste(edge_1,edge_2,sep="_"))]
split = unique(split[,.(edge_1,edge_2,sum(dummy)),by=key])[,2:4,with=F]
split
# A B 3
# C D 1
# A C 1
你可以这样做,
table(vapply(paste(my_data$id1, my_data$id2), function(i) paste(sort(strsplit(i, ' ')[[1]]), collapse=' '), ' '))
#A A A B A C C D
# 1 3 1 1