跳到内容

这些函数用于查找距离另一个固定顶点不超过给定限制的顶点,这些顶点被称为该顶点的邻域。 请注意,ego()neighborhood()ego_size()neighborhood_size()make_ego_graph()make_neighborhood()_graph() 是同义词(别名)。

用法

connect(graph, order, mode = c("all", "out", "in", "total"))

ego_size(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

neighborhood_size(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

ego(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

neighborhood(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

make_ego_graph(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

make_neighborhood_graph(
  graph,
  order = 1,
  nodes = V(graph),
  mode = c("all", "out", "in"),
  mindist = 0
)

参数

graph

输入图。

order

整数,表示邻域的阶数。 负值表示无限阶数。

mode

字符常量,指定在分析有向图时如何使用边的方向。 对于“out”,仅遵循传出边,因此最多在 order 步内从源顶点可到达的所有顶点都会被计数。 对于“"in"”,最多在 order 步内可以从其到达源顶点的所有顶点都会被计数。 “"all"”忽略边的方向。 此参数对于无向图将被忽略。

节点

执行计算的顶点。

mindist

将顶点包含在结果中的最小距离。

  • ego_size()/neighborhood_size() 返回一个整数向量。

  • ego()/neighborhood()(同义词)根据 igraph_opt("return.vs.es") 的值返回 igraph.vs 列表或数字向量列表,有关性能特征的详细信息请参见。

  • make_ego_graph()/make_neighborhood_graph() 返回图的列表。

  • connect() 返回一个新的图对象。

详细信息

给定顶点 v 的给定阶数 r 的邻域包括所有比该阶数更接近 v 的顶点。 即,阶数 0 始终是 v 本身,阶数 1 是 v 加上它的直接邻居,阶数 2 是阶数 1 加上阶数 1 中顶点的直接邻居,依此类推。

ego_size()/neighborhood_size()(同义词)返回给定阶数的邻域的大小,对于每个给定的顶点。

ego()/neighborhood()(同义词)返回属于给定阶数的邻域的顶点,对于每个给定的顶点。

make_ego_graph()/make_neighborhood()_graph()(同义词)使用给定的阶数参数从给定顶点的所有邻域创建(子)图。 此函数保留顶点、边和图属性。

connect() 通过将每个顶点连接到其邻域中的所有其他顶点来创建一个新图。

作者

Gabor Csardi csardi.gabor@gmail.com, 第一个版本由 Vincent Matossian 完成

示例


g <- make_ring(10)

ego_size(g, order = 0, 1:3)
#> [1] 1 1 1
ego_size(g, order = 1, 1:3)
#> [1] 3 3 3
ego_size(g, order = 2, 1:3)
#> [1] 5 5 5

# neighborhood_size() is an alias of ego_size()
neighborhood_size(g, order = 0, 1:3)
#> [1] 1 1 1
neighborhood_size(g, order = 1, 1:3)
#> [1] 3 3 3
neighborhood_size(g, order = 2, 1:3)
#> [1] 5 5 5

ego(g, order = 0, 1:3)
#> [[1]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 1
#> 
#> [[2]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 2
#> 
#> [[3]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 3
#> 
ego(g, order = 1, 1:3)
#> [[1]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1]  1  2 10
#> 
#> [[2]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1] 2 1 3
#> 
#> [[3]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1] 3 2 4
#> 
ego(g, order = 2, 1:3)
#> [[1]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1]  1  2 10  3  9
#> 
#> [[2]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1]  2  1  3 10  4
#> 
#> [[3]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1] 3 2 4 1 5
#> 

# neighborhood() is an alias of ego()
neighborhood(g, order = 0, 1:3)
#> [[1]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 1
#> 
#> [[2]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 2
#> 
#> [[3]]
#> + 1/10 vertex, from 4ff9ff0:
#> [1] 3
#> 
neighborhood(g, order = 1, 1:3)
#> [[1]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1]  1  2 10
#> 
#> [[2]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1] 2 1 3
#> 
#> [[3]]
#> + 3/10 vertices, from 4ff9ff0:
#> [1] 3 2 4
#> 
neighborhood(g, order = 2, 1:3)
#> [[1]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1]  1  2 10  3  9
#> 
#> [[2]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1]  2  1  3 10  4
#> 
#> [[3]]
#> + 5/10 vertices, from 4ff9ff0:
#> [1] 3 2 4 1 5
#> 

# attributes are preserved
V(g)$name <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
make_ego_graph(g, order = 2, 1:3)
#> [[1]]
#> IGRAPH 126a9df UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from 126a9df (vertex names):
#> [1] a--b b--c a--j i--j
#> 
#> [[2]]
#> IGRAPH 0357f44 UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from 0357f44 (vertex names):
#> [1] a--b b--c c--d a--j
#> 
#> [[3]]
#> IGRAPH 4634461 UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from 4634461 (vertex names):
#> [1] a--b b--c c--d d--e
#> 
# make_neighborhood_graph() is an alias of make_ego_graph()
make_neighborhood_graph(g, order = 2, 1:3)
#> [[1]]
#> IGRAPH 0601178 UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from 0601178 (vertex names):
#> [1] a--b b--c a--j i--j
#> 
#> [[2]]
#> IGRAPH c8cb1b5 UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from c8cb1b5 (vertex names):
#> [1] a--b b--c c--d a--j
#> 
#> [[3]]
#> IGRAPH 67607f9 UN-- 5 4 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c)
#> + edges from 67607f9 (vertex names):
#> [1] a--b b--c c--d d--e
#> 

# connecting to the neighborhood
g <- make_ring(10)
g <- connect(g, 2)