From: Gabor Csardi <csardi_at_rmki.kfki.hu>

Date: Sat, 10 May 2008 19:09:22 +0200

g2 <- graph.edgelist(neis, dir=FALSE)

}

Date: Sat, 10 May 2008 19:09:22 +0200

Solomon, if i understand two-mode networks properly (they're bipartite, right?), then this is not hard to do with igraph. Basically, for each vertex create an order=2 neighborhood, and then create a graph from the adjacency list, it is something like this:

two.to.one <- function(g, keep) {

neis <- neighborhood(g, order=2) neis <- lapply(seq(neis), function(x) neis[[x]][ neis[[x]] != x-1]) ## drop self-loops neis <- lapply(neis, function(x) x[ x %in% keep ]) ## keep only these neis <- lapply(seq(neis), function(x) t(cbind(x-1, neis[[x]]))) ## create edge lists neis[-keep-1] <- NULL ## these are not needed neis <- matrix(unlist(neis), byrow=TRUE, nc=2) ## a single edge list neis <- neis[ neis[,1] > neis[,2], ] ## count an edge once onlymode(neis) <- "character"

g2 <- graph.edgelist(neis, dir=FALSE)

V(g2)$id <- V(g2)$name ## 'id' is used in Pajekg2

}

It does not check that the graph is indeed two-mode, and it keeps the vertices given in the 'keep' argument. 'keep' is made of igraph vertex ids. You can use it like this:

g <- graph.ring(10)

keep <- seq(0,8,by=2) ## we keep the 'even' vertices

g2 <- two.to.one(g, keep)

write.graph(two.to.one(g, keep), format="pajek", file="/tmp/a.net")

I haven't tested it much. We'll have a better function in the next igraph version. Gabor

On Fri, May 09, 2008 at 03:37:05PM -0400, Messing, Solomon O. wrote:

*> Hi,
**>
**>
**>
*

> Does anyone know of a package in R that has a function to convert

*> network data (e.g. an adjacency matrix or ) from 2-mode to 1-mode? I am
**> conducting social network analysis. I know that Pajek has this function
**> under Net --> Transform --> 2-mode to 1-mode --> Rows. I have searched
**> the documentation under packages 'sna', 'network', 'igraph', and
**> 'dynamicgraph' but I was not able to identify a comparable function.
**>
**>
**>
**> I would just export my data to Pajek and import it to R, but I'm going
**> to have to generate hundreds of these graphs, so it would take quite a
**> bit of time to do it this way.
**>
**>
**>
**> Thanks,
**>
**>
**>
**> Solomon
**>
**>
**>
**>
**> [[alternative HTML version deleted]]
**>
**> ______________________________________________
**> R-help_at_r-project.org mailing list
**> https://stat.ethz.ch/mailman/listinfo/r-help
**> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
**> and provide commented, minimal, self-contained, reproducible code.
*

-- Csardi Gabor <csardi_at_rmki.kfki.hu> UNIL DGM ______________________________________________ R-help_at_r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.Received on Sat 10 May 2008 - 17:32:30 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 14 May 2008 - 00:30:37 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*