> d <- data.frame(id=1:4, no.contacts=c(2,3,3,1)) > d$contacts_list <- list(3:4, c(1,3,4), c(4,2,1), 1 )
If you store that information in a longer format, with each row being an edge to the relationship graph, it can make further processing easier: d2 <- with(d, data.frame(id=rep(id, vapply(contacts_list,length,0)), contacts_list=unlist(contacts_list))) At that point you may want to install and load the igraph package, convert d2 to an 'igraph' object, and use use package:igraph's functions on it: install.packages("igraph") library(igraph) g <- graph.data.frame(d2) neighbors(g, 2, mode="out") # [1] 1 3 4 neighbors(g, 2, mode="in") # [1] 3 plot(g) Bill Dunlap TIBCO Software wdunlap tibco.com On Sat, May 10, 2014 at 5:20 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > On 10/05/2014, 7:46 AM, Ragia Ibrahim wrote: >> >> Dear Group, >> I have data like the following >> >> id contacts_list number of contacts >> --------------------------------------------------- >> 1 3 4 2 >> 2 1 3 4 3 >> 3 4 2 1 3 >> 4 1 1 >> ------------------------------------------------------ >> >> >> can you kindly please sugest a data type in R to use for it? >> i thought about data frame that consists of a list element. but lists >> are not in the same length, any solutions? > > > You can use a dataframe, but the data.frame function gets confused by the > contacts_list, so you need to set it up in two steps, e.g. > > d <- data.frame(id=1:4, no.contacts=c(2,3,3,1)) > d$contacts_list <- list(3:4, c(1,3,4), c(4,2,1), 1 ) > > Other dataframe functions (e.g. printing, indexing, etc.) should work: > >> d > id no.contacts contacts_list > 1 1 2 3, 4 > 2 2 3 1, 3, 4 > 3 3 3 4, 2, 1 > 4 4 1 1 > >> d[2,] > id no.contacts contacts_list > 2 2 3 1, 3, 4 > > A slightly confusing bit is that if you pick out a single element of column > 3 you'll get a list containing it: > >> d[2,3] > [[1]] > [1] 1 3 4 > > so you should use the double bracket list-indexing style: > >> d[[2,3]] > [1] 1 3 4 > > Duncan Murdoch > > > ______________________________________________ > 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.