On 05/31/2012 10:50 AM, LCOG1 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"))

Hi Josh,
How about this?

test..
  Apples Pears Beans
1      1     0     1
2      3     0     2
3      0     1     1
4      0     0     0
5      1     2     0
indices2names<-function(x,xnames) return(rep(xnames,x))
apply(as.matrix(test..),1,indices2names,names(test..))
[[1]]
[1] "Apples" "Beans"

[[2]]
[1] "Apples" "Apples" "Apples" "Beans"  "Beans"

[[3]]
[1] "Pears" "Beans"

[[4]]
character(0)

[[5]]
[1] "Apples" "Pears"  "Pears"

Jim

______________________________________________
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.

Reply via email to