[R] List of "occurrence" matrices
Gabor Grothendieck
ggrothendieck at gmail.com
Thu Aug 7 16:57:15 CEST 2008
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 <davison at stats.ox.ac.uk> 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 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.
>>
>>
>
> --
> 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 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.
>
More information about the R-help
mailing list