我正在研究下面显示的数据框架 .
S.no tmp size
1 tmp1 100
2 tmp2, tmp3 200
3 tmp1, tmp2, tmp3 50
我想要做的是绘制一个igraph图,其中每个tmp是一个顶点并且到达边缘,每一行中的tmp值将具有该特定行中tmp值的其余部分的边缘 . 节点大小与size列成比例 . 节点tmp1的大小应该是150(100 50),类似地,tmp2应该具有节点大小250(200 50) .
我试过这种方式,Subset数据框 .
df <- table[3,2]
df # gives output as "tmp1, tmp2, tmp3"
class(df) # data frame
df <- gsub(", ",":",df)
df # gives output as "tmp1:tmp2:tmp3"
graph <- graph.formula(df:df) # graph.formula(:) to map every vertex
# to other vertices.
当我这样做时,我得到一个图中的单个节点,即它将字符df作为顶点 . 我已经尝试使用as.list(),as.character()明确地将df强制转换为字符类型,列表类型,但它不起作用 .
我已经浏览了图形网站中的graph.data.frame()函数手册,但无法理解如何以列方式输入顶点数据 .
我被困在这里几个小时,我在这里是个新手 . 请帮忙!
2 回答
这是R友好表格中的样本数据
首先,我想扩展
tmp
列,以便每行有一个值#
现在我可以根据S.no组号组装边缘列表
基本上我们只是寻找具有至少两个节点的组,然后采用这些顶点的所有可能组合来为每个组创建边缘列表,然后我们将所有内容绑定在一起 .
最后,我们使用聚合计算节点大小
现在我们只是以图表形式将它们组合在一起
您可能希望将尺寸重新缩放到更合理的尺寸以查看边缘
你也可以用
cSplit