If it's working you are just getting lucky: this is the syntax you want/need:

if(any(rowSums(m) == N.1s)) flag <- TRUE 

You test each of the rowSums and then you check if any of the results are true. 

That warning came up because R has a way to convert numbers to T/F values but 
it hesitates because it's a weird thing to do. 

Michael

On Nov 23, 2011, at 5:55 AM, Juan Antonio Balbuena <j.a.balbu...@uv.es> wrote:

> Hello
> Thank you very much for your help. 
> 
> I eventually tried 
> 
> if(any(rowSums(m)) == N.1s) flag <- TRUE 
> 
> and seems to do what I intended. 
> 
> Although a get a warning: 
> 
> In any(rowSums(m)) : coercing argument of type 'double' to logical
> 
> It seems to be harmless.
> 
> Thank you very much again for your time.
> 
> Juan A. Balbuena
> 
> 
> 
> El 21/11/2011 18:04, R. Michael Weylandt escribió:
>> 
>> any()
>> 
>> Michael
>> 
>> On Mon, Nov 21, 2011 at 10:58 AM, Juan Antonio Balbuena <balbu...@uv.es> 
>> wrote:
>>> Hello
>>> I would appreciate your help on the followig. I want to generate random
>>> binary matrices but I need to discard those with all-1 rows. That is, for a
>>> 10x10 matrix with five 1's
>>> 
>>>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
>>>  [1,]    0    0    0    0    0    0    0    0    0     1
>>>  [2,]    0    0    0    0    0    0    1    0    0     0
>>>  [3,]    0    0    0    0    0    0    1    0    0     0
>>>  [4,]    0    0    0    0    0    0    0    0    0     0
>>>  [5,]    0    0    0    0    0    0    0    0    0     0
>>>  [6,]    0    0    0    0    0    0    0    0    0     0
>>>  [7,]    0    0    0    0    0    0    0    0    0     0
>>>  [8,]    0    0    0    0    0    0    0    0    0     0
>>>  [9,]    0    0    0    0    0    0    0    0    0     0
>>> [10,]    0    0    0    0    0    1    1    0    0     0
>>> 
>>> would be passed on to further computations, whereas
>>> 
>>>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
>>>  [1,]    0    0    0    0    0    0    0    0    0    0
>>>  [2,]    0    0    0    0    0    0    0    0    0     0
>>>  [3,]    0    0    0    0    0    0    0    0    0     0
>>>  [4,]    0    0    0    0    0    0    0    0    0     0
>>>  [5,]    0    0    0    0    0    0    0    0    0     0
>>>  [6,]    0    0    0    0    0    0    0    0    0     0
>>>  [7,]    0    0    0    0    0    0    0    0    0     0
>>>  [8,]    0    0    0    0    0    0    0    0    0     0
>>>  [9,]    0    0    0    0    0    0    0    0    0     0
>>> [10,]    0    1    0    1    0    1    1    0    0     1
>>> must be discarded.
>>> 
>>> For any N.1s <= Nrow, I am trying
>>> 
>>> Nrow = 10
>>> Ncol = 10
>>> N.1s = 5
>>> flag <- TRUE
>>> while (flag == TRUE) {
>>> m <- matrix ((sample (c(rep(1, each=N.1s), rep(0,
>>> each=((Ncol*Nrow)-N.1s))))), Nrow)
>>> SUMROW <- rowSums(m)
>>>        if (SUMROW == N.1s) {flag <- TRUE} else {flag <- FALSE}
>>>        }
>>> }
>>> 
>>> but I get this warning
>>> Warning message:
>>> In if (SUMROW == N.1s) { :
>>>  the condition has length > 1 and only the first element will be used
>>> 
>>> What I specifically need is a way to write "If any of the elements of the
>>> SUMROW vector == N.1s then flag <-true else flag<-false".
>>> 
>>> Any help would be much appreciated.
>>> 
>>> --
>>> View this message in context: 
>>> http://r.789695.n4.nabble.com/Discarding-a-matrix-based-on-the-rowSums-value-tp4091995p4091995.html
>>> Sent from the R help mailing list archive at Nabble.com.
>>> 
>>> ______________________________________________
>>> 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.
>> 
> 
> -- 
> Dr. Juan A. Balbuena 
> Marine Zoology Unit 
> Cavanilles Institute of Biodiversity and Evolutionary Biology       
> University of Valencia                                                        
>   http://www.uv.es/~balbuena 
> P.O. Box 22085                                     
> http://www.uv.es/cavanilles/zoomarin/index.htm 
> 46071 Valencia, Spain                                         
> http://cetus.uv.es/mullpardb/index.html 
> e-mail: j.a.balbu...@uv.es    tel. +34 963 543 658    fax +34 963 543 733 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
> NOTE! For shipments by EXPRESS COURIER use the following street address: 
> C/ Catedrático José Beltrán 2, 46980 Paterna (Valencia), Spain. 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        [[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