try this: > test.. <- data.frame(Apples = c(1,3,0,0,1), Pears = c(0,0,1,0,2), Beans = + c(1,2,1,0,0)) > > lapply(seq(nrow(test..)), function(.row){ + do.call(c, sapply(names(test..), function(.col){ + rep(.col, test..[[.col]][.row]) + })) + }) [[1]] Apples Beans "Apples" "Beans"
[[2]] Apples1 Apples2 Apples3 Beans1 Beans2 "Apples" "Apples" "Apples" "Beans" "Beans" [[3]] Pears Beans "Pears" "Beans" [[4]] character(0) [[5]] Apples Pears1 Pears2 "Apples" "Pears" "Pears" On Wed, May 30, 2012 at 8:50 PM, LCOG1 <jr...@lcog.org> wrote: > Hi all, > I Have a data frame test.. that I would like to convert into a list below > test_ but am unsure how to efficiently do this. I can do it in a for loop > but my data set is huge and it takes forever. Wondering how I can do this > more efficiently. So again how to I go from test.. to test_ below? > #Data frame > test.. <- data.frame(Apples = c(1,3,0,0,1), Pears = c(0,0,1,0,2), Beans = > c(1,2,1,0,0)) > > #list - my desired outcome > test_ <- list("1" = c("Apples","Beans"), > "2" = c("Apples","Apples","Apples","Beans","Beans"), > "3" = c("Pears","Beans"), > "4" = c(NULL), > "5" = c("Apples","Pears","Pears")) > > Thanks > > Josh > > -- > View this message in context: > http://r.789695.n4.nabble.com/Probably-a-good-use-for-apply-tp4631883.html > Sent from the R help mailing list archive at Nabble.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. -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. ______________________________________________ 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.