That's a very nice solution. Here is a small tweak to get the names all at the same time rather than applying them afterwards:
sapply(levels(unlist(DF)), function(x) crossprod(DF == x), simplify = FALSE) or lapply(sapply(levels(unlist(DF)), "==", DF, simplify = FALSE), crossprod) On Thu, Aug 7, 2008 at 10:03 AM, Dan Davison <[EMAIL PROTECTED]> wrote: > > > Lauri Nikkinen wrote: >> >> R users, >> >> I don't know if I can make myself clear but I'll give it a try. I have >> a data.frame like this >> >> x <- "var1,var2,var3,var4 >> a,b,b,a >> b,b,c,b >> c,a,a,a >> a,b,c,c >> b,a,c,a >> c,c,b,b >> a,c,a,b >> b,c,a,c >> c,a,b,c" >> DF <- read.table(textConnection(x), header=T, sep=",") >> DF >> >> and I would like to sum all the combinations/occurences by a factor >> (letter in this case) between variables and produce a list of >> "occurrence" matrices. For example in this case the "occurrence" >> matrix (first element of list) for factor "a" should look like this >> >>>occulist >> $a >> var1 var2 var3 var4 >> var1 x 0 1 1 >> var2 0 x 1 2 >> var3 1 1 x 1 >> var4 1 2 1 x >> >> $b >> etc. >> >> because there is two rows where var2 and var4 has "a" >> >> >> I think this does it: >> >> occur.matrices <- function(df) { >> levels <- levels(unlist(df)) >> ans <- lapply(levels, function(level) crossprod(df == level)) >> structure(ans, names=levels) >> } >> >> Dan >> >>> occur.matrices(DF) >> $a >> var1 var2 var3 var4 >> var1 3 0 1 1 >> var2 0 3 1 2 >> var3 1 1 3 1 >> var4 1 2 1 3 >> >> $b >> var1 var2 var3 var4 >> var1 3 1 0 1 >> var2 1 3 1 1 >> var3 0 1 3 1 >> var4 1 1 1 3 >> >> $c >> var1 var2 var3 var4 >> var1 3 1 0 1 >> var2 1 3 0 1 >> var3 0 0 3 1 >> var4 1 1 1 3 >> >> >> >> DF[DF$var2=="a" & DF$var4=="a",] >> >> Can you give an advice how to achieve this kind of a list of matrices? >> >> -Lauri >> >> ______________________________________________ >> 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. >> >> > > -- > View this message in context: > http://www.nabble.com/List-of-%22occurrence%22-matrices-tp18870809p18871268.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. > ______________________________________________ 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.