[R] subscripts in lists
Liaw, Andy
andy_liaw at merck.com
Mon Aug 11 14:33:01 CEST 2003
> sapply(lis, function(x) x[which(x == "next") + 1])
[1] "want1" "want2"
HTH,
Andy
> From: Chris Knight
>
> I am tying myself in knots over subscripts when applied to lists
>
> I have a list along the lines of:
>
> lis<-list(c("a","b","next","want1","c"),c("d", "next", "want2", "a"))
>
> >From which I want to extract the values following "next" in each
> member of the list, i.e. something along the lines of answer<-c(
> "want1", "want2"). Is this possible without using loops? The elements
> of lis are of different lengths and "next" occurs once per element
> somewhere in the middle.
>
> The thought process behind this is:
>
> It's easy enough to do it for an individual element of the
> list: lis[[1]][match("next",lis[[1]])+1]
>
> but how to do that to all elements of the list? I can get their
> indices e.g. as a list using lapply:
>
> lapply(lapply(lis,match,x="next"),"+",y=1)
>
> or return a particular subscript using:
> lapply(lis,"[", i=3)
>
> but don't see how one could combine the two to get answer<-c("want1",
> "want2") without resorting to:
>
> answer<-character
> for(s in 1:length(lis)){
> answer<-c(answer,lis[[s]][match("next",lis[[s]])+1])
> }
>
> Am I missing something obvious (or non-obvious)? I suppose the
> secondary question is 'should I care?'. I am intending to use this on
> hundreds of lists sometimes with tens of thousands of elements, with
> more than one version of "next" in each, so felt that the lower
> efficiency of looping was likely to matter.
> Any help much appreciated,
>
> Chris
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Dr. Christopher G. Knight Tel:+44 (0)1865 275 111
> Department of Plant Sciences +44 (0)1865 275 790
> South Parks Road
> Oxford OX1 3RB
> UK `
> · . , ,><(((º>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo> /r-help
>
More information about the R-help
mailing list