左列元素与R中的右列元素“完全连接”

问题描述 投票:0回答:1

我正在尝试实现一个特定的图网络,其中所有右列元素都必须与所有左列元素相连,而不能相互链接。

假设这样的表:

table=data.frame(matrix(c("A","B","A","C","B","D","1","2","3","1","4","2"),ncol=2))
colnames(table)=c("gene","enhancer")

print(table)

#gene enhancer
#1    A        1
#2    B        2
#3    A        3
#4    C        1
#5    B        4
#6    D        2

这里我想要一个类似(A--1,C--1),(B--2,D--2),(A--3)和(B--4)的网络。

如果直接使用程序包,则我的网络具有间接边缘,因此我不想要它。基本上,我希望有一个更大图的子图,其中所有基因都与所有增强子相连。

我已经成功地为一对一链接创建了所需的网络,但是我无法为更复杂的关系创建它。

我试图将group_splitgroup_keys函数一起使用,以相互检索连接的元素。我还使用了[[aggregate函数。我做不到,可能是我想得太多了,但这似乎并不简单。

我该如何实现?
r igraph
1个回答
0
投票
您可以使用expand.grid()获得基因和增强子之间完整的成对连接,然后通过igraph将其发送到graph_from_data_frame()

library(igraph) library(dplyr) genes <- c("A", "B", "C", "D") enhancers <- 1:4 g <- expand.grid(x = genes, y = enhancers) %>% graph_from_data_frame(directed = FALSE) # Use the attribute "type" to create a bipartite network V(g)$type <- V(g)$name %in% genes plot(g, layout = layout_as_bipartite(g))

“”

reprex package(v0.3.0)在2020-04-13创建

© www.soinside.com 2019 - 2024. All rights reserved.