[R] Indexing a vector by a list of vectors
Gabor Grothendieck
ggrothendieck at gmail.com
Tue Apr 4 23:57:08 CEST 2006
In thinking about this a bit more the second one can be
simplified to:
mapply("[", list(vec), ind)
On 4/4/06, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> The following is quite simple although it does use a function:
>
> lapply(ind, function(x) vec[x])
>
> and if you really don't want to use a function then try:
>
> mapply("[", rep(list(vec), length(ind)), ind)
>
>
> On 4/4/06, Erik Iverson <iverson at biostat.wisc.edu> wrote:
> > Hello R-help -
> >
> > I have
> >
> > vec <- c("string1", "string2", "string3")
> > ind <- list(c(1,2),c(1,2,3))
> >
> > I want "vec" indexed by each vector in the list "ind".
> > The first element of the list I want would be vec[c(1,2)],
> > the second element would be vec[c(1,2,3)], like the following.
> >
> > [[1]]
> > [1] "string1" "string2"
> >
> > [[2]]
> > [1] "string1" "string2" "string3"
> >
> > Using for loops, this is simple. For fun, I tried to implement it
> > without a for loop using some combination of *apply() functions and "[".
> >
> > I succeeded with
> >
> > myfunc <- function(x) {
> > do.call("[",list(vec,x))
> > }
> > lapply(ind,myfunc)
> >
> > I was not, however, able to get my desired result without defining my
> > own dummy function. Can anyone think of a way? As I said, I already
> > have a way that works, I'm just curious if there is a more 'elegant'
> > solution that does not rely on my having to define another function.
> > Seems like it should be possible.
> >
> > Thanks, Erik Iverson
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> >
>
More information about the R-help
mailing list