[EMAIL PROTECTED] said the following on 5/14/2008 12:40 PM:
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.

Try

data.frame(names.comb = names(comb),
           finaldata = sapply(comb, "[[", "a"))

HTH,

--sundar

______________________________________________
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.

Reply via email to