On 09/13/2010 08:41 PM, Sunny Srivastava wrote: > Dear R-Helpers, > I have a list l1 like: > > l1[[1]] > a b c > > l1[[2]] > d > > l1[[3]] > e f > > I want an output res like: > > res[[1]] > 1 1 1 > > res[[2]] > 2 > > res[[3]] > 3 3 > > Essentially, I want to replicate each index equal to the number of elements > present in that index. > > Below is what I do to accomplish this: > > l1 <- list(c("a", "b", "c"), "d", c("e", "f")) > res <- mapply(rep, seq_along(l1),times=(lapply(l1, length))) > > Is there a more elegant way of doing this (possibly using one (l/m)apply > function)?
Don't know about elegance, but how about lapply(seq_along(l1), function(i)rep(i, length(l1[[j]])) ) -- Peter Dalgaard Center for Statistics, Copenhagen Business School Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.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.