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}
|