[R] removeing only rows/columns with "na" value from square ( symmetrical ) matrix.
Gabor Grothendieck
ggrothendieck at gmail.com
Sun May 20 16:52:27 CEST 2012
On Sun, May 20, 2012 at 10:17 AM, Nevil Amos <nevil.amos at monash.edu> wrote:
> I have some square matrices with na values in corresponding rows and
> columns.
>
> M<-matrix(1:2,10,10)
> M[6,1:2]<-NA
> M[10,9]<-NA
> M<-as.matrix(as.dist(M))
> print (M)
>
> 1 2 3 4 5 6 7 8 9 10
> 1 0 2 1 2 1 NA 1 2 1 2
> 2 2 0 1 2 1 NA 1 2 1 2
> 3 1 1 0 2 1 2 1 2 1 2
> 4 2 2 2 0 1 2 1 2 1 2
> 5 1 1 1 1 0 2 1 2 1 2
> 6 NA NA 2 2 2 0 1 2 1 2
> 7 1 1 1 1 1 1 0 2 1 2
> 8 2 2 2 2 2 2 2 0 1 2
> 9 1 1 1 1 1 1 1 1 0 NA
> 10 2 2 2 2 2 2 2 2 NA 0
>
>
> How do I remove just the row/column pair( in this trivial example row 6 and
> 10 and column 6 and 10) containing the NA values?
>
> so that I end up with all rows/ columns that are not NA - e.g.
>
> 1 2 3 4 5 7 8 9
> 1 0 2 1 2 1 1 2 1
> 2 2 0 1 2 1 1 2 1
> 3 1 1 0 2 1 1 2 1
> 4 2 2 2 0 1 1 2 1
> 5 1 1 1 1 0 1 2 1
> 7 1 1 1 1 1 0 2 1
> 8 2 2 2 2 2 2 0 1
> 9 1 1 1 1 1 1 1 0
>
Try this:
ix <- na.action(na.omit(replace(M, upper.tri(M), 0)))
M[-ix, -ix]
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-help
mailing list