And here is another approach: > out <- vector('list',length(unique(unlist(A1)))) > names(out) <- sort(unique(unlist(A1))) > for( i in seq_along(A1) ) { + for( j in as.character(A1[[i]]) ) { + out[[j]] <- c(out[[j]], i) + } + } > > out $`1` [1] 1
$`2` [1] 1 2 $`3` [1] 1 $`4` [1] 1 2 4 $`5` [1] 2 4 $`13` [1] 4 $`23` [1] 3 Which approach is faster/more efficient could depend on what your real data looks like, how big the list is, how large/variable the vectors within the list are. Both methods could probably also be improved, but unless the list is big enough that either takes quite a bit of time then it is probably not worth the time to optimize them. On Tue, Jul 8, 2014 at 11:11 AM, Greg Snow <538...@gmail.com> wrote: > Here is one approach that gives almost the same answer as your example: > >> A1<-list(c(1:4),c(2,4,5),23,c(4,5,13)) >> >> A2 <- sort(unique(unlist(A1))) >> names(A2) <- A2 >> sapply(A2, function(x) which( sapply(A1, function(y) x %in% y) ), > + simplify=FALSE, USE.NAMES=TRUE ) > $`1` > [1] 1 > > $`2` > [1] 1 2 > > $`3` > [1] 1 > > $`4` > [1] 1 2 4 > > $`5` > [1] 2 4 > > $`13` > [1] 4 > > $`23` > [1] 3 > > If you want the `23` to be in the 23rd element of the list (with empty > values before it) then just change A2 to be a vector from 1 to the > largest value > > On Tue, Jul 8, 2014 at 10:39 AM, Lorenzo Alfieri <alfio...@hotmail.com> wrote: >> Hi, >> I'm trying to find a way to reorder the elements of a list. >> Let's say I have a list like this: >> A1<-list(c(1:4),c(2,4,5),23,c(4,5,13)) >> >>> A1 >> [[1]] >> [1] 1 2 3 4 >> >> [[2]] >> [1] 2 4 5 >> >> [[3]] >> [1] 23 >> >> [[4]] >> [1] 4 5 13 >> >> All the elements included in it are values, while each sublist is a time >> index >> Now, I'd like to reorder the list (without looping) so to obtain one sublist >> for each value, which include all the time indices where each value appears. >> In other words, the result should look like this: >>>A2 >> [[1]] >> [1] 1 >> >> [[2]] >> [1] 1 2 #because value "2" appears in the time index [[1]] and [[2]] of A1 >> >> [[3]] >> [1] 1 >> >> [[4]] >> [1] 1 2 4 >> >> [[5]] >> [1] 2 4 >> >> [[13]] >> [1] 4 >> >> [[23]] >> [1] 3 >> >> Any suggestion? >> Thanks >> Alfio >> >> >> [[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. > > > > -- > Gregory (Greg) L. Snow Ph.D. > 538...@gmail.com -- Gregory (Greg) L. Snow Ph.D. 538...@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.