[R] Accessing items in a list of lists

Tony Plate tplate at acm.org
Wed May 14 21:49:05 CEST 2008


Try this:

 > data1 <- list(a = 1, b = 2, c = 3)
 > data2 <- list(a = 4, b = 5, c = 6)
 > data3 <- list(a = 3, b = 6, c = 9)
 > comb <- list(data1 = data1, data2 = data2, data3 = data3)
 > sapply(comb, "[[", "a")
data1 data2 data3
     1     4     3
 > # Also, this can be useful:
 > comb[[c("data2", "b")]]
[1] 5
 >

nalbicelli at tricadiacdpcmanagement.com wrote:
> Using R 2.6.2, say I have the following list of lists, "comb":
> 
> data1 <- list(a = 1, b = 2, c = 3)
> data2 <- list(a = 4, b = 5, c = 6)
> data3 <- list(a = 3, b = 6, c = 9)
> comb <- list(data1 = data1, data2 = data2, data3 = data3)
> 
> So that all names for the lowest level list are common.  How can I most
> efficiently access all of the sublist items "a" indexed by the outer
> list names?  For example, I can loop through comb[[i]], unlisting as I
> go, and then look up the field "a", as below, but there has got to be a
> cleaner way.
> 
> finaldata <- double(0)
> for(i in 1:length(names(comb))) {
> 	test <- unlist(comb[[i]])
> 	finaldata <- c(finaldata, test[which(names(test) == "a")])
> }
> data.frame(names(comb), finaldata)
> 
> Gives what I want:
>   names.comb. finaldata
> 1       data1         1
> 2       data2         4
> 3       data3         3
> 
> Any help you can give would be greatly appreciated.  Thanks.
> --------------------------------------------------------
> 
> 
> 
> This information is being sent at the recipient's reques...{{dropped:16}}
> 
> ______________________________________________
> 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.
>



More information about the R-help mailing list