Thank you Joshua.

Ashim.

On Thu, Aug 4, 2011 at 2:53 PM, Joshua Wiley <jwiley.ps...@gmail.com> wrote:

> On Thu, Aug 4, 2011 at 2:08 AM, Ashim Kapoor <ashimkap...@gmail.com>
> wrote:
> >
> > On Thu, Aug 4, 2011 at 2:12 PM, Joshua Wiley <jwiley.ps...@gmail.com>
> wrote:
> >>
> >> On Thu, Aug 4, 2011 at 1:40 AM, Ashim Kapoor <ashimkap...@gmail.com>
> >> wrote:
> >> >
> >> >
> >> > On Thu, Aug 4, 2011 at 1:02 PM, Joshua Wiley <jwiley.ps...@gmail.com>
> >> > wrote:
> >> >>
> >> >> On Thu, Aug 4, 2011 at 12:12 AM, Ashim Kapoor <ashimkap...@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.
> >> >>
> >> >
> >> >> j<- for ( t in seq(1:2) )  lst[[t]]$y
> >> >> j
> >> > NULL
> >> >
> >> > Why is j NULL  ?
> >>
> >> You are confusing how for loops work, please read the documentation for
> >> ?for
> >>
> > The help says : -
> >    ‘for’, ‘while’ and ‘repeat’ return ‘NULL’ invisibly.  ‘for’ sets
> >      ‘var’ to the last used element of ‘seq’, or to ‘NULL’ if it was of
> >      length zero.
> >
> > but it does not tell me how to fix my problem which is to return the
> values.
>
> sure it does, look at the Examples!  for returns null, so you need to
> do the assignment on a function that actually returns what you want,
> that would be: lst[[t]]$y (yep, [[]] and $ are really functions that
> return values although because they are operators you may not
> typically think of them like regular functions).  Of course you are
> using a loop so you do not want to just keep overwriting the same
> variable, so you will need to instatiate a variable outside the loop
> (preferablly sized appropriately for the number of iterations in your
> loop) and then do something like:
>
> for (i in 1:2) j[[i]] <- lst[[i]]]$y
>
> loops get to be a bit of a pain in this regard (in my opinion), which
> is why I showed you several solutions that use lapply instead.  If you
> have not already (hopefully you did), try them out, you'll like
> them...you can basically do what you tried simply assigning the output
> of lapply to a variable j without having to worry about instatiating
> it and assigning to a new position each iteration, etc.
>
> j2 <- lapply(1:2, function(i) lst[[i]]$y)
>
> if you set up j as a list,
>
> identical(j, j2)
>
> ought to be TRUE.  Of course (as I showed using sapply() ), because
> you are returning a single value each time, it would also be
> reasonable for j to simply be a vector.
>
> Cheers
>
> >
> >>
> >> >
> >> >>
> >> >> ## 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...@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@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@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/
> >
> > Many Thanks,
> > Ashim
> >
>
>
>
> --
> Joshua Wiley
> Ph.D. Student, Health Psychology
> Programmer Analyst II, ATS Statistical Consulting Group
> University of California, Los Angeles
> https://joshuawiley.com/
>

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

Reply via email to