R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

as.directed {igraph}R 文档

在有向图和无向图之间转换

描述

as.directed 将无向图转换为有向图,as.undirected 则相反,它将有向图转换为无向图。

用法

as.directed(graph, mode = c("mutual", "arbitrary", "random", "acyclic"))

as.undirected(
  graph,
  mode = c("collapse", "each", "mutual"),
  edge.attr.comb = igraph_opt("edge.attr.comb")
)

参数

要转换的图。

模式

字符常量,定义转换算法。对于 as.directed,它可以是 mutualarbitrary。对于 as.undirected,它可以是 eachcollapsemutual。 请参见下面的详细信息。

edge.attr.comb

指定如果 mode="collapse"mode="mutual",如何处理边属性。 在这些情况下,许多边可能会被映射到新图中的单个边,并且它们的属性会被组合。 有关详细信息,请参见 attribute.combination

详细信息

as.directed 的转换算法

"arbitrary"

图中的边数保持不变,为每个无向边创建一个任意有向边,但边的方向是确定性的(即,如果您多次调用该函数,它始终指向同一方向)。

"mutual"

为每个无向边创建两个有向边,每个方向一个。

"random"

图中的边数保持不变,并为每个无向边创建一个随机有向边。 如果您使用相同的图多次调用该函数,您将获得不同的结果。

"acyclic"

图中的边数保持不变,并为每个无向边创建一个有向边,以确保生成的图是有向无环图。 这是通过确保边始终从较低索引顶点指向较高索引顶点来实现的。 请注意,如果原始图包含环边,则该图可能包含长度为 1 的环。

as.undirected 的转换算法

"each"

边的数量保持不变,为每个有向边创建一个无向边,此版本可能会创建具有多个边的图。

"collapse"

将为每对至少有一个有向边连接的顶点创建一个无向边,不会创建多个边。

"mutual"

将为每对互连边创建一个无向边。 非互连边将被忽略。 如果同一对顶点之间存在多个互连边对,则此模式可能会创建多个边。

一个新的图对象。

作者

Gabor Csardi csardi.gabor@gmail.com

参见

simplify 用于从图中删除多个和/或环边。

示例


g <- make_ring(10)
as.directed(g, "mutual")
g2 <- make_star(10)
as.undirected(g)

# Combining edge attributes
g3 <- make_ring(10, directed=TRUE, mutual=TRUE)
E(g3)$weight <- seq_len(ecount(g3))
ug3 <- as.undirected(g3)
print(ug3, e=TRUE)
## Not run: 
  x11(width=10, height=5)
  layout(rbind(1:2))
  plot( g3, layout=layout_in_circle, edge.label=E(g3)$weight)
  plot(ug3, layout=layout_in_circle, edge.label=E(ug3)$weight)

## End(Not run)

g4 <- graph(c(1,2, 3,2,3,4,3,4, 5,4,5,4,
              6,7, 7,6,7,8,7,8, 8,7,8,9,8,9,
              9,8,9,8,9,9, 10,10,10,10))
E(g4)$weight <- seq_len(ecount(g4))
ug4 <- as.undirected(g4, mode="mutual",
              edge.attr.comb=list(weight=length))
print(ug4, e=TRUE)


[包 igraph 版本 1.3.5 索引]