丢弃 R 中 igraph 上的二分边
Discard Bipartite Edges on igraph in R
我希望在 iGraph 上丢弃二分边,这样我就只能看到成员数大于 3 的边。我正在查看参加过 classes
的 student
的数据集。我只想查看 classes 的图表,其中连接基于是否每个 class.
有超过 3 个学生
students | class
Jane | Biology
Jack | Biology
Mark | Biology
Steve | Biology
Jane | Chemistry
Jack | Chemistry
Mark | Chemistry
Steve | Chemistry
Lane | Physics
Steve | Physiology
我最后想要一张只有 Biology
和 Chemistry
的图表,在它们之间画一条线,因为这两个 class 的学生会员人数 > 3
这是我目前的情况:
g.students
cl<- clusters(g.students)
g.students<- delete.vertices(g.students, names(cl$membership[ cl$membership > 3]))
不知何故,当我输入这个时,我得到了这个,这不可能是因为应该有节点和边:
IGRAPH c2cf5c3 UN-B 1 0 --
+ attr: name (v/c), type (v/l)
我不确定为什么会这样。有没有其他方法可以丢弃这些边?
这是一种方法:
A <- as_adj(g.students) # Extracting the adjacency matrix
B <- as.matrix(A[unique(df$class), unique(df$students)]) # Selecting its relevant part
C <- B %*% t(B) # Numbers of common students between classes
C <- ifelse(C > 3, 1, 0) * (1 - diag(nrow(C))) # Setting diagonal to zero, discarding
# edges, and setting remaining weights to 1
C <- C[colSums(C) > 0, colSums(C) > 0] # Discarding vertices
g <- graph_from_adjacency_matrix(C) # Obtaining a graph
我希望在 iGraph 上丢弃二分边,这样我就只能看到成员数大于 3 的边。我正在查看参加过 classes
的 student
的数据集。我只想查看 classes 的图表,其中连接基于是否每个 class.
students | class
Jane | Biology
Jack | Biology
Mark | Biology
Steve | Biology
Jane | Chemistry
Jack | Chemistry
Mark | Chemistry
Steve | Chemistry
Lane | Physics
Steve | Physiology
我最后想要一张只有 Biology
和 Chemistry
的图表,在它们之间画一条线,因为这两个 class 的学生会员人数 > 3
这是我目前的情况:
g.students
cl<- clusters(g.students)
g.students<- delete.vertices(g.students, names(cl$membership[ cl$membership > 3]))
不知何故,当我输入这个时,我得到了这个,这不可能是因为应该有节点和边:
IGRAPH c2cf5c3 UN-B 1 0 --
+ attr: name (v/c), type (v/l)
我不确定为什么会这样。有没有其他方法可以丢弃这些边?
这是一种方法:
A <- as_adj(g.students) # Extracting the adjacency matrix
B <- as.matrix(A[unique(df$class), unique(df$students)]) # Selecting its relevant part
C <- B %*% t(B) # Numbers of common students between classes
C <- ifelse(C > 3, 1, 0) * (1 - diag(nrow(C))) # Setting diagonal to zero, discarding
# edges, and setting remaining weights to 1
C <- C[colSums(C) > 0, colSums(C) > 0] # Discarding vertices
g <- graph_from_adjacency_matrix(C) # Obtaining a graph