igraph 对象的顶点/节点属性

2024-04-09

我正在 igraph 中处理网络分析数据 这是一个示例数据框

df_edgelist=structure(list(Nominator = structure(c(6L, 4L, 7L, 8L, 1L, 2L, 
3L, 5L), .Label = c("Andrea", "Dan", "Dan", "Greg", "Jerry", 
"Jim", "Rachel", "Sarah"), class = "factor"), Nominee = structure(c(5L, 
2L, 8L, 1L, 7L, 3L, 6L, 4L), .Label = c("Andrea", "Dan", "Greg", 
"Jeff", "Jerry", "Jerry", "Sarah", "Tim"), class = "factor"), 
    Age_Nominator = c(24L, 25L, 29L, 45L, 43L, 67L, 67L, 45L)), class = "data.frame", row.names = c(NA, 
-8L))

从文档中here https://igraph.org/r/doc/graph_from_data_frame.html我的印象是graph_from_dataframe函数将处理第三列Age_Nominator作为顶点属性,如果我还为其提供另一个数据帧并在中设置该数据帧的名称vertices的论证graph_from_dataframe。这是正确的还是第三列df_edgelist还是边缘属性?


感兴趣的两个论点graph_from_data_frame are d and vertices。正如评论中所讨论的,额外的列d将是边缘属性,而额外的列vertices(第一列是顶点名称)将是顶点属性。

Further,

If vertices is not NULL然后给出的符号边列表d被检查为仅包含列出的顶点名称vertices.

意味着前两列d不能提及任何不存在于vertices。另一方面,如果vertices有一些额外的顶点,这不会引起任何问题,它们只会被隔离。

例如,

df_vertices <- data.frame(someNames = c("NewName", as.character(unique(unlist(df_edgelist[, 1:2])))))
df_vertices$Age <- 20 + 1:nrow(df_vertices)
df_vertices
#    someNames Age
# 1    NewName  21
# 2        Jim  22
# 3       Greg  23
# 4     Rachel  24
# 5      Sarah  25
# 6     Andrea  26
# 7        Dan  27
# 8      Jerry  28
# 9        Tim  29
# 10      Jeff  30

通过这种方式,我们考虑所有必要的顶点并添加一个额外的顶点NewName. Then

g <- graph_from_data_frame(df_edgelist, vertices = df_vertices)
# V(g)$Age
#  [1] 21 22 23 24 25 26 27 28 29 30
V(g)$name
#  [1] "NewName" "Jim"     "Greg"    "Rachel"  "Sarah"   "Andrea"  "Dan"     "Jerry"   "Tim"    
# [10] "Jeff"   
E(g)
# + 8/8 edges from 7f024f1 (vertex names):
# [1] Jim   ->Jerry  Greg  ->Dan    Rachel->Tim    Sarah ->Andrea Andrea->Sarah  Dan   ->Greg  
# [7] Dan   ->Jerry  Jerry ->Jeff  

正如预期的那样。如果您想避免那些孤立的顶点,例如vertices你可以指定

df_vertices[df_vertices$someNames %in% as.character(unique(unlist(df_edgelist[, 1:2]))), ]
#    someNames Age
# 2        Jim  22
# 3       Greg  23
# 4     Rachel  24
# 5      Sarah  25
# 6     Andrea  26
# 7        Dan  27
# 8      Jerry  28
# 9        Tim  29
# 10      Jeff  30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

igraph 对象的顶点/节点属性 的相关文章

随机推荐