Dear Rolf, dear all, this was an inspiring challenge :-) This seems to do the task...
--- snip --- x <- list(`1` = c(7, 13, 1, 4, 10), `2` = c(2, 5, 14, 8, 11), `3` = c(6, 9, 15, 12, 3)) f <- factor(rep(1:3,5)) v <- as.vector(unlist(x)[ paste(rep(levels(f), length(x[[1]])), rep(1:length(x[[1]]), each=length(levels(f))), sep="") ]) v --- snip --- I leave it to you, whether this is an elegant solution or not ;-) Cheers, Kimmo Rolf Turner kirjoitti 27.9.2024 klo 6.55: > > I have (toy example): > > x <- list(`1` = c(7, 13, 1, 4, 10), > `2` = c(2, 5, 14, 8, 11), > `3` = c(6, 9, 15, 12, 3)) > and > > f <- factor(rep(1:3,5)) > > I want to create a vector v of length 15 such that the entries of v, > corresponding to level l of f are the entries of x[[l]]. I.e. I want > v to equal > > c(7, 2, 6, 13, 5, 9, 1, 14, 15, 4, 8, 12, 10, 11, 3) > > I can create v "easily enough", using say, a for-loop. It seems to me, > though, that there should be sexier (single command) way of achieving > the desired result. However I cannot devise one. > > Can anyone point me in the right direction? Thanks. > > cheers, > > Rolf Turner > -- Kimmo Elo Senior Lecturer | Adjunct professor, Dr. ======================================================== University of Eastern Finland Department of Geographical and Historical Studies P.O. Box 111 FIN-80101 Joensuu Finland E-mail: kimmo....@uef.fi ResearchGate: www.researchgate.net/profile/Kimmo_Elo LAWPOL Consortium (PI): https://lawpol.fi/en ======================================================== ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.