igraph对象的顶点/节点属性
我正在使用igraph中的网络分析数据 下面是一个数据帧示例igraph对象的顶点/节点属性,r,igraph,R,Igraph,我正在使用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,
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))
从文档中,我得到的印象是,如果我还提供另一个数据帧,并在
graph\u From\u dataframe
的Vertexs
参数中设置该数据帧的名称,那么graph\u From\u dataframe
函数将把第三列年龄\u命名者
视为顶点属性。这是正确的还是df\u edgelist
中的第3列仍然是一个边属性?来自数据帧的graph\u中感兴趣的两个参数是d
和顶点
。如注释中所述,d
中的额外列将是边属性,而顶点
中的额外列(第一列是顶点名称)将是顶点属性
此外
如果顶点
不是NULL
,则检查d
中给出的符号边列表,以仅包含顶点
中列出的顶点名称
表示d
的前两列不能提及顶点中不存在的任何顶点。另一方面,如果
顶点
有一些额外的顶点,则不会引起任何问题,它们将被隔离
比如说,
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
正如所料。如果要避免这些孤立的顶点,可以指定为顶点
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
变量
Age\u Nominator
具有与边相对应的值。例如,在data.frame的第一行中,24是否适用于Jim或Jerry?默认情况下,Igraph将此作为边属性加载。如果要将其作为顶点属性,则需要创建一个data.frame,其中每个命名顶点对应一个属性值。好的,这更有意义,但不确定,因为文档有点混乱。因此,当我加载顶点属性dataframe时,如果我加载的dataframe具有未包含在sepcific edgelist中的额外名称,这有关系吗?我正在使用多个不同的edgelists,但每个edgelist中都有一个数据帧,其中包含所有顶点的属性,我只想使用该数据帧,而不是拆分它。您可以看看这个问题吗?是否可以在igraph中添加节点权重?图聚类算法是否可以使用节点权重(而不是边权重)?
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