Dear R users, I have a list of vectors (list is called HTNlist). Each vector is of length 1 to 4 and takes only 0 and 1 as values. E.g. head(HTNlist) $`30008` [1] 1 0 1 0 $`60008` [1] 0 0 1 0 $`90008` [1] 0 0 1 0 $`100007` [1] 1 $`130001` [1] 0 1 $`130007` [1] 1 0 1 0 I would like to obtain a frequency table for the elements of the list. I want to know how many of '1 0 0' I have in the list, how many '1 0 1 0' etc. Can you please help? Thank you in advance, MP [[alternative HTML version deleted]]
Hello, Maybe something like table(unlist(lapply(HTNlist, paste, collapse = ''))) (Untested, it's a bad idea not to use ?dput to give a data example.) Use dput(head(HTNlist)) # paste the output of this in a mail Hope this helps, Rui Barradas Em 05-08-2014 18:39, Marie-Pierre Sylvestre escreveu:> Dear R users, > > I have a list of vectors (list is called HTNlist). Each vector is of length > 1 to 4 and takes only 0 and 1 as values. E.g. > > head(HTNlist) > $`30008` > [1] 1 0 1 0 > > $`60008` > [1] 0 0 1 0 > > $`90008` > [1] 0 0 1 0 > > $`100007` > [1] 1 > > $`130001` > [1] 0 1 > > $`130007` > [1] 1 0 1 0 > > I would like to obtain a frequency table for the elements of the list. I > want to know how many of > '1 0 0' I have in the list, how many '1 0 1 0' etc. > > Can you please help? > > Thank you in advance, > MP > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >
You can those vectors into character strings and pass them to table(). E.g.,> d <- list(`30008`=c(1,0,1,0), `60008`=c(0,0,1,0), `90008`=c(0,0,1,0), `100007`=1, `130001`=c(0,1), `130007`=c(1,0,1,0)) > dChar <- vapply(d, FUN=function(di)paste(di, collapse=" "), FUN.VALUE="") > dTable <- table(dChar) > dTabledChar 0 0 1 0 0 1 1 1 0 1 0 2 1 1 2> dTable["1 0 1 0"]1 0 1 0 2 Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, Aug 5, 2014 at 10:39 AM, Marie-Pierre Sylvestre <mp.sylvestre at gmail.com> wrote:> Dear R users, > > I have a list of vectors (list is called HTNlist). Each vector is of length > 1 to 4 and takes only 0 and 1 as values. E.g. > > head(HTNlist) > $`30008` > [1] 1 0 1 0 > > $`60008` > [1] 0 0 1 0 > > $`90008` > [1] 0 0 1 0 > > $`100007` > [1] 1 > > $`130001` > [1] 0 1 > > $`130007` > [1] 1 0 1 0 > > I would like to obtain a frequency table for the elements of the list. I > want to know how many of > '1 0 0' I have in the list, how many '1 0 1 0' etc. > > Can you please help? > > Thank you in advance, > MP > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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.
hi, this may be overkill but i have a general function that tabulates lists of anything. it works on vectors as in your example. the input is a list and the output is a list with 2 elements 1) list of unique values and 2) a matching vector of counts. to that out[[1]][[k]] occurs out[[2]][k] times. a warning: it runs through the list one by one so for long lists it may take a long time cheers, peter table.list <- function(my.list) { n.elements <- length(my.list) elements.counted <- rep(0,n.elements) val.now <- my.list[[1]] elements.now <- sapply(my.list,function(x) {identical(val.now,x)}) hist.val <- list(NULL,val.now) hist.count <- c(0,sum(elements.now)) elements.counted <- elements.counted + elements.now n.elements.counted <- sum(elements.counted) while( n.elements.counted < n.elements) { ind.now <- min(which(elements.counted == 0)) val.now <- my.list[[ind.now]] elements.now <- sapply(my.list,function(x) {identical(val.now,x)}) hist.count <- c(hist.count,sum(elements.now)) hist.val <- lappend(hist.val,val.now) elements.counted <- elements.counted + elements.now n.elements.counted <- sum(elements.counted) } hist.val[[1]] <- NULL hist.count <- hist.count[-1] return(list(hist.val,hist.count)) } ## function On Tue, Aug 5, 2014 at 1:39 PM, Marie-Pierre Sylvestre < mp.sylvestre@gmail.com> wrote:> Dear R users, > > I have a list of vectors (list is called HTNlist). Each vector is of length > 1 to 4 and takes only 0 and 1 as values. E.g. > > head(HTNlist) > $`30008` > [1] 1 0 1 0 > > $`60008` > [1] 0 0 1 0 > > $`90008` > [1] 0 0 1 0 > > $`100007` > [1] 1 > > $`130001` > [1] 0 1 > > $`130007` > [1] 1 0 1 0 > > I would like to obtain a frequency table for the elements of the list. I > want to know how many of > '1 0 0' I have in the list, how many '1 0 1 0' etc. > > Can you please help? > > Thank you in advance, > MP > > [[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. >-- Peter Salzman, PhD Department of Biostatistics and Computational Biology University of Rochester [[alternative HTML version deleted]]