[R] How to extract sublist from a list?
Richard Ma
xuanlong.ma at uts.edu.au
Thu Aug 4 12:57:58 CEST 2011
Hi Joshua,
Really helpful that you posted so many useful solutions for my problem.
I can understand all your codes except these:
*[code]
lapply(lst, `[[`, "y")
## or if you are only retrieving a single value
sapply(lst, `[[`, "y")
[/code]*
Can you explain these a little bit? What does '[[' means?
Thanks a lot,
Richard
Joshua Wiley-2 wrote:
>
> On Thu, Aug 4, 2011 at 12:12 AM, Ashim Kapoor
> <ashimkapoor at gmail.com> wrote:
>>> How would we do this problem looping over seq(1:2) ?
>
> Because this goes to an email list serv, it is good practice to quote
> the original problem. I have no idea what "this" is.
>
>>>
>>>
>> To extend the example in the corresponding nabble post : -
>> sub1<-list(x="a",y="ab")
>> sub2<-list(x="c",y="ad")
>> lst<-list(sub1=sub1,sub2=sub2)
>> for ( t in seq(1:2) ) print(lst[[t]]$y)
>>
>> So I can print out the sub1$y/sub2$y but it's not clear how to extract
>> them.
>
> Well, to extract them, just drop the call to print. You could use them
> directly in the loop or could store them in new variables.
>
> ## note seq(1:2) is redundant with simply 1:2
> or (t in 1:2) print(nchar(lst[[t]]$y))
>
> I am guess, though, that what you might be hoping to do is extract
> specific elements from a list and store the extract elements in a new
> list.
>
> lapply(1:2, function(i) lst[[i]]["y"])
> ## or compare
> lapply(1:2, function(i) lst[[i]][["y"]])
>
>>
>> My original was different though.
>>
>> How would say:-
>>
>> for ( t in seq(1:2) ) sub"t"$y
>>
>> Where sub"t" evaluates to sub1 or sub 2?
>
> if you actually want "sub1", or "sub2":
>
> ## note that I am wrapping in print() not so that it works
> ## but so that you can see it at the console
> for (t in 1:2) print(paste("sub", t, sep = ''))
>
> from which we can surmise that the following should work:
>
> for (t in 1:2) print(lst[[paste("sub", t, sep = '')]])
>
> which trivially extends to:
>
> for (t in 1:2) print(lst[[paste("sub", t, sep = '')]]$y)
>
> or perhaps more appropriately
>
> for (t in 1:2) print(lst[[paste("sub", t, sep = '')]][["y"]])
>
> If you just need to go one level down for *all* elements of your list
>
> lapply(lst, `[[`, "y")
> ## or if you are only retrieving a single value
> sapply(lst, `[[`, "y")
>
> Hope this helps,
>
> Josh
>
>>
>> Many thanks.
>> Ashim
>>
>>
>>> On Thu, Aug 4, 2011 at 10:59 AM, Richard Ma
>>> <xuanlong.ma at uts.edu.au>wrote:
>>>
>>>> Thank you so much GlenB!
>>>>
>>>> I got it done using your method.
>>>>
>>>> I'm just curious how did you get this idea? Cause for me, this looks so
>>>> tricky....
>>>>
>>>> Cheers,
>>>> Richard
>>>>
>>>> -----
>>>> I'm a PhD student interested in Remote Sensing and R Programming.
>>>> --
>>>> View this message in context:
>>>> http://r.789695.n4.nabble.com/How-to-extract-sublist-from-a-list-tp3717451p3717713.html
>>>> Sent from the R help mailing list archive at Nabble.com.
>>>>
>>>> ______________________________________________
>>>> 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.
>>>>
>>>
>>>
>>
>> [[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.
>>
>
>
>
> --
> Joshua Wiley
> Ph.D. Student, Health Psychology
> Programmer Analyst II, ATS Statistical Consulting Group
> University of California, Los Angeles
> https://joshuawiley.com/
>
> ______________________________________________
> 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.
>
-----
I'm a PhD student interested in Remote Sensing and R Programming.
--
View this message in context: http://r.789695.n4.nabble.com/How-to-extract-sublist-from-a-list-tp3717451p3718282.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list