File: as.directed.Rd

package info (click to toggle)
r-cran-igraph 1.0.1-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 18,232 kB
  • sloc: ansic: 173,538; cpp: 19,365; fortran: 4,550; yacc: 1,164; tcl: 931; lex: 484; makefile: 149; sh: 9
file content (86 lines) | stat: -rw-r--r-- 2,962 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/conversion.R
\name{as.directed}
\alias{as.directed}
\alias{as.undirected}
\title{Convert between directed and undirected graphs}
\usage{
as.directed(graph, mode = c("mutual", "arbitrary"))

as.undirected(graph, mode = c("collapse", "each", "mutual"),
  edge.attr.comb = igraph_opt("edge.attr.comb"))
}
\arguments{
\item{graph}{The graph to convert.}

\item{mode}{Character constant, defines the conversion algorithm. For
\code{as.directed} it can be \code{mutual} or \code{arbitrary}. For
\code{as.undirected} it can be \code{each}, \code{collapse} or
\code{mutual}. See details below.}

\item{edge.attr.comb}{Specifies what to do with edge attributes, if
\code{mode="collapse"} or \code{mode="mutual"}.  In these cases many edges
might be mapped to a single one in the new graph, and their attributes are
combined. Please see \code{\link{attribute.combination}} for details on
this.}
}
\value{
A new graph object.
}
\description{
\code{as.directed} converts an undirected graph to directed,
\code{as.undirected} does the opposite, it converts a directed graph to
undirected.
}
\details{
Conversion algorithms for \code{as.directed}: \describe{
\item{"arbitrary"}{The number of edges in the graph stays the same, an
arbitrarily directed edge is created for each undirected edge.}
\item{"mutual"}{Two directed edges are created for each undirected
edge, one in each direction.} }

Conversion algorithms for \code{as.undirected}: \describe{
\item{"each"}{The number of edges remains constant, an undirected edge
is created for each directed one, this version might create graphs with
multiple edges.} \item{"collapse"}{One undirected edge will be created
for each pair of vertices which are connected with at least one directed
edge, no multiple edges will be created.} \item{"mutual"}{One
undirected edge will be created for each pair of mutual edges. Non-mutual
edges are ignored. This mode might create multiple edges if there are more
than one mutual edge pairs between the same pair of vertices.  } }
}
\examples{
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)
\dontrun{
  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)
}

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)
}
\author{
Gabor Csardi \email{csardi.gabor@gmail.com}
}
\seealso{
\code{\link{simplify}} for removing multiple and/or loop edges from
a graph.
}
\keyword{graphs}