[R] Make one vector from matrix comparison
    Stavros Macrakis 
    macrakis at alum.mit.edu
       
    Wed Nov 12 15:27:55 CET 2008
    
    
  
You can just call `c` on your result to flatten the matrix into a
vector.  You could also eliminate the for-loops by using the `apply`
function:
pairwise_setequal <-
   function(a,b) c(apply(a, 1, function(r){ apply(b, 1, setequal, r ) } ))
But are you sure that is what you want to do?  In the case of boolean
vectors, setequal simply tests whether the two vectors include the
same elements, i.e. both are empty, both contain only F, both contain
only T, or both contain both F's and T's.  If you want to compare the
vectors pointwise, use `identical` instead of `setequal`.
             -s
> On Mon, Nov 10, 2008 at 10:11 AM, Chris82 <rubenbauar at gmx.de> wrote:
>> I compare each row of a matrix with each row of another matrix.
>>
>> testmat1 <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4)
>> testmat2 <- matrix(c(1,2,3,5,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4)
>>
>> Both matrix differs in the last row.
>>
>> Now I create a loop:
>>
>> for (i in (1:4)){
>> for (j in (1:4)){
>> b <- (c(setequal(testmat1[j,],testmat2[i,])))
>> print(b)
>> }
>> }
>>
>> R outputs me the following:
>>
>> [1] TRUE
>> [1] FALSE   ....
>> but I need one vector like this:
>>
>> [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE
>> FALSE FALSE FALSE FALSE
    
    
More information about the R-help
mailing list