Hello,

Try

while(TRUE){
    ix <- apply(M, 2, function(x) sum(is.na(x)))
    if(all(ix == 0)) break
    ix <- max(which(ix == max(ix)))
    M <- M[-ix , -ix]
}
M

Note that in the original there's really no difference between columns 9 and 10. If in the above code you use 'min', column 9 is removed and it's still a minimum of removals.
(Like in any case of a tie.)

Hope this helps,

Rui Barradas

Em 21-05-2012 11:00, Nevil Amos <nevil.a...@monash.edu> escreveu:
Date: Mon, 21 May 2012 00:17:10 +1000
From: Nevil Amos<nevil.a...@monash.edu>
To:r-help@r-project.org
Subject: [R] removeing only rows/columns with "na" value from square (
        symmetrical ) matrix.
Message-ID:
        <CAGUDtZJOW7x3sjZsnqf7uAQN6gKFg+EMqq=-hbqkgcwggaj...@mail.gmail.com>
Content-Type: text/plain

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


if i use na omit I lose rows 1,2,6, and 9
which is not what I want.

thanks
-- Nevil Amos Molecular Ecology Research Group Australian Centre for Biodiversity Monash University CLAYTON VIC 3800 Australia [[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.

Reply via email to