Hi Danielle. You appear to have two problems: 1) getting the data into R Because I don't have the file at hand, I'm going to simulate reading it through a text connection orgdata<-textConnection("Graph ID | Vertex1 | Vertex2 | weight\n1 | Alice | Bob | 2\n1 | Alice | Chris | 1\n1 | Alice | Jane | 2\n1 | Bob | Jane | 2\n1 | Chris | Jane | 3\n2 | Alice | Tom | 2\n2 | Alice | Kate | 1\n2 | Kate | Tom | 3\n2 | Tom | Mike | 2") dfr <-read.table(orgdata, header=TRUE, sep="|", as.is=TRUE, strip.whit=TRUE)
For you, this would probably be more like dfr <-read.table("somepath/fileOfInterest.csv", header=TRUE, sep="|", as.is=TRUE, strip.whit=TRUE) 2) performing actions per graph id require(igraph) result<-sapply(unique(dfr$Graph.ID), function(curID){ #There may be more elegant ways of creating the graphs per ID, but it works curDfr<- dfr[dfr$Graph.ID==curID,] g<-graph.edgelist(as.matrix(curDfr[,c("Vertex1", "Vertex2")])) g<-set.edge.attribute(g, "weight", value= curDfr$weight) #return whatever information you're interested about, based on graph object g #for now I'm just returning edge and vertex counts return(c(v=vcount(g), e=ecount(g))) }) colnames(result)<-unique(dfr$Graph.ID) print(result) HTH, Nick Sabbe -- ping: nick.sa...@ugent.be link: http://biomath.ugent.be wink: A1.056, Coupure Links 653, 9000 Gent ring: 09/264.59.36 -- Do Not Disapprove -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Danielle Li Sent: donderdag 5 mei 2011 22:25 To: r-help@r-project.org Subject: [R] Looping over graphs in igraph Hi, I'm trying to do some basic social network analysis with igraph in R, but I'm new to R and haven't been able to find documentation on a couple basic things: I want to run igraph's community detection algorithms on a couple thousand small graphs but don't know how to automate igraph looking at multiple graphs described in a single csv file. My data look like something in ncol format, but with an additional column that has an ID for which graph the edge belongs in: Graph ID | Vertex1 | Vertex2 | weight 1 | Alice | Bob | 2 1 | Alice | Chris | 1 1 | Alice | Jane | 2 1 | Bob | Jane | 2 1 | Chris | Jane | 3 2 | Alice | Tom | 2 2 | Alice | Kate | 1 2 | Kate | Tom | 3 2 | Tom | Mike | 2 so on and so forth for about 2000 graph IDs, each with about 20-40 vertices. I've tried using the "split" command but it doesn't recognize my graph id: ("object 'graphid' not found)--this may just be because I don't know how to classify a column of a csv as an object. Ultimately, I want to run community detection on each graph separately--to look only at the edges when the graph identifier is 1, make calculations on that graph, then do it again for 2 and so forth. I suspect that this isn't related to igraph specifically--I just don't know the equivalent command in R for what in pseudo Stata code would read as: forvalues i of 1/N { temp_graph=subrows of the main csv file for which graphid==`i' cs`i' = leading.eigenvector.community.step(temp_graph) convert cs`i'$membership into a column in the original csv } I want the output to look something like: Graph ID | Vertex1 | Vertex2 | weight | Vertex 1 membership | Vertex 2 membership | # of communities in the graph 1 | Alice | Bob | 2 | A | B | 2 1 | Alice | Chris | 1 | A | B | 2 1 | Alice | Jane | 2 | A | B | 2 1 | Bob | Jane | 2 | B | B | 2 1 | Chris | Jane | 3 | B | B | 2 2 | Alice | Tom | 2 | A | B | 3 2 | Alice | Kate | 1 | A | C | 3 2 | Kate | Tom | 3 | C | B | 3 2 | Tom | Mike | 2 | B | C | 3 Here, the graphs are treated completely separately so that community A in graph 1 need not have anything to do with community A in graph 2. I would really appreciate any ideas you guys have. Thank you! Danielle [[alternative HTML version deleted]] ______________________________________________ R-help@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. ______________________________________________ R-help@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.