如果您从 R 中使用 igraph,请使用此选项
igraph-attribute-combination {igraph} | R 文档 |
很多时候,当图的结构被修改时,原始图的顶点/边的映射会映射到新创建(修改)的图中的顶点/边。例如,simplify
将多条边映射到单条边。 igraph 提供了一种灵活的机制来指定在这种情况下如何处理顶点/边属性。
支持属性组合的函数有一个或两个额外的参数,称为 vertex.attr.comb
和/或 edge.attr.comb
,它们指定如何执行属性的映射。例如,contract
将多个顶点收缩为一个顶点,顶点的属性可以组合并存储为新图的顶点属性。
(顶点或边)属性组合的规范可以给出为
一个字符标量,
一个函数对象,或
字符标量和/或函数对象的列表。
如果它是一个字符标量,那么它指的是预定义的组合之一,请参阅下面的列表。
如果它是一个函数,那么期望给定的函数执行组合。它将为图中的每个新顶点/边调用一次,带有一个参数:映射到该单个顶点的顶点的属性值。
第三个选项,一个列表,可用于为不同的属性指定不同的组合方法。列表的命名条目对应于具有相同名称的属性。列表的未命名条目(即如果名称是空字符串)指定默认的组合方法。即
list(weight="sum", "ignore")
指定新边的权重应该是旧图中相应边的权重之和;并且其余属性应被忽略(=删除)。
以下组合行为是预定义的
该属性被忽略并删除。
计算属性的总和。这不适用于字符属性,并且仅当它们具有定义的 sum
泛型时才适用于复杂属性。(例如,它适用于 Matrix
包中的稀疏矩阵,因为它们具有 sum
方法。)
计算属性的乘积。这不适用于字符属性,并且仅当它们具有定义的 prod
函数时才适用于复杂属性。
计算并返回属性的最小值。对于字符和复杂属性,使用标准的 R min
函数。
计算并返回属性的最大值。对于字符和复杂属性,使用标准的 R max
函数。
统一随机地选择一个提供的属性值。对于字符和复杂属性,这是通过调用 sample
实现的。
始终选择第一个属性值。它通过调用 head
函数来实现。
始终选择最后一个属性值。它通过调用 tail
函数来实现。
计算并返回属性的平均值。对于字符和复杂属性,这只是调用 mean
函数。
选择属性的中位数。为所有属性类型调用 R median
函数。
使用 c
函数连接属性。这几乎总是导致一个复杂的属性。
Gabor Csardi csardi.gabor@gmail.com
graph_attr
、vertex_attr
、edge_attr
有关如何在一般情况下使用图/顶点/边属性的信息。 igraph_options
关于 igraph 参数。
g <- graph( c(1,2, 1,2, 1,2, 2,3, 3,4) )
E(g)$weight <- 1:5
## print attribute values with the graph
igraph_options(print.graph.attributes=TRUE)
igraph_options(print.vertex.attributes=TRUE)
igraph_options(print.edge.attributes=TRUE)
## new attribute is the sum of the old ones
simplify(g, edge.attr.comb="sum")
## collect attributes into a string
simplify(g, edge.attr.comb=toString)
## concatenate them into a vector, this creates a complex
## attribute
simplify(g, edge.attr.comb="concat")
E(g)$name <- letters[seq_len(ecount(g))]
## both attributes are collected into strings
simplify(g, edge.attr.comb=toString)
## harmonic average of weights, names are dropped
simplify(g, edge.attr.comb=list(weight=function(x) length(x)/sum(1/x),
name="ignore"))