[R] behaviour of rows and colomns suppression in a matrix
Olivier ETERRADOSSI
olivier.eterradossi at mines-ales.fr
Thu Mar 13 17:02:48 CET 2014
Thank you, Arun and Sarah
I was not trying to "take row 0 that does not exist", rather trying "not to
take" (I wrote "TM[- unused.rows,]") something that does not exist.
So what I understand from Arun's answer is that I was badly using MINUS with
a vector instead of NOT with a logical.
Olivier
-----Message d'origine-----
De : arun [mailto:smartpink111 at yahoo.com]
Envoyé : jeudi 13 mars 2014 16:13
À : r-help at r-project.org
Cc : Olivier ETERRADOSSI
Objet : Re: [R] behaviour of rows and colomns suppression in a matrix
Hi,
You could use:
TM2[!margin.Rows <=thresh,!margin.Cols <=thresh] # [,1] [,2] #[1,] 1
1 #[2,] 1 1 #[3,] 1 1
#For the first case:
TM1[!margin.Rows <=thresh,!margin.Cols <=thresh] # [,1] [,2] #[1,] 1
1 #[2,] 1 1
A.K.
On Thursday, March 13, 2014 10:02 AM, Olivier ETERRADOSSI
<olivier.eterradossi at mines-ales.fr> wrote:
Hi List,
while running a script on a set of matrices I came into a case I would not
have guessed to arrive.
Below is a small toy example to illustrate the case.
Of course there is a simple workaround (using a simple test), but why does
this occur, and shouldn’t it be corrected ?
More probably I miss a point, but which one ? Is this behavior obtained on
purpose and why ?
Sorry if it’s a FAQ… I didn’t find my way to it.
(And sorry for multiple posting if any : I got a warning from r-bounce but
did not understand it).
Thanks, Olivier
#############################################
# toy example 1 (no problem with this one)
toy.matrix.1<-matrix(c(1,0,1,1,0,1,0,0,0),3,3)
# getting the marginal sums
margin.Rows<- apply(toy.matrix.1,MARGIN=1,FUN=sum)
margin.Cols<- apply(toy.matrix.1,MARGIN=2,FUN=sum)
#giving a threshold for lines and columns suppression
thresh<-0
# finding the items to remove
unused.rows<-which(margin.Rows<=thresh) # unused.rows == 2
unused.cols<-which(margin.Cols<=thresh) # unused.cols == 3
TM1<-toy.matrix.1
TM1<-TM1[-unused.rows,]
TM1<-TM1[,-unused.cols]
TM1
# [,1] [,2]
#[1,] 1 1
#[2,] 1 1 # OK
##############################################
# toy example 2 (oops, no rows to suppress…)
toy.matrix.2<-matrix(c(1,1,1,1,1,1,0,0,0),3,3)
# getting the marginal sums
margin.Rows<- apply(toy.matrix.2,MARGIN=1,FUN=sum)
margin.Cols<- apply(toy.matrix.2,MARGIN=2,FUN=sum)
#giving a threshold for lines and columns suppression
thresh<-0
unused.rows<-which(margin.Rows<=thresh) # unused.rows ==
integer(0)
unused.cols<-which(margin.Cols<=thresh) # unused.cols == 3
TM2<-toy.matrix.2
TM2<-TM2[-unused.rows,]
TM2<-TM2[,-unused.cols]
TM2
# [,1] [,2] # empty...
###############################################
# I was expecting :
# [,1] [,2]
#[1,] 1 1
#[2,] 1 1
#[3,] 1 1
# which of course is obtained using :
TM2<-toy.matrix.2
if(length(unused.rows) !=0) {TM2<-TM2[-unused.rows,]}
if(length(unused.rows) !=0 ){TM2<-TM2[,-unused.cols]}
TM2
______________________________________________
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