[R] Selecting section of matrix

David Winsemius dwinsemius at comcast.net
Mon Aug 15 20:32:28 CEST 2011


On Aug 15, 2011, at 6:09 AM, mdvaan wrote:

> Hi,
>
> I have a question concerning the selection of data. Let's say that  
> given
> list h created below, I would like to select a section of the 1999  
> matrix.
> For a case (rownames and colnames) I would like to select the cells  
> that
> have a value > 0. So for case 8025
>
>       8025 8026 8027
> 8025    1    1    1
> 8026    1    1    1
> 8027    1    1    1
>
 > tst <- h$`1999`
 > tst[tst[,"8025"]>0, tst["8025",]>0]
       B
B      8025 8026 8027
   8025    1    1    1
   8026    1    1    1
   8027    1    1    1


>
> And for case 8028
>
>       8028 8029
> 8028    1    1
> 8029    1    1

 > tst[tst[,"8028"]>0, tst["8028",]>0]
       B
B      8028 8029
   8028    1    1
   8029    1    1

And to do it programmatically:

sapply( colnames(tst), function(var) tst[tst[,var]>0, tst[var,]>0])

-- 
David.
>
>
>
> DF2 = data.frame(read.table(textConnection("  A  B  C
> 80  8025  1995
> 80  8026  1995
> 80  8029  1995
> 81  8026  1996
> 82  8025  1997
> 82  8026  1997
> 83  8025  1997
> 83  8027  1997
> 90  8026  1998
> 90  8027  1998
> 90  8029  1998
> 84  8026  1999
> 84  8027  1999
> 85  8028  1999
> 85  8029  1999"),head=TRUE,stringsAsFactors=FALSE))
>
> e <- function(y) crossprod(table(DF2[DF2$C %in% y, 1:2]))
> years <- sort(unique(DF2$C))
> f <- as.data.frame(embed(years, 3))
> g<-lapply(split(f, f[, 1]), e)
> h<-lapply(g, function (x) ifelse(x>0,1,0))# These are the adjacency  
> matrices
> per year
> h
>
> Thanks very much!
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Selecting-section-of-matrix-tp3744570p3744570.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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



More information about the R-help mailing list