[R] proportional matrix rows

Gabor Grothendieck ggrothendieck at myway.com
Mon Feb 7 14:01:03 CET 2005


Robin Hankin <r.hankin <at> soc.soton.ac.uk> writes:

: 
: Hi
: 
: I have a two-column integer matrix like this:
: 
: R> jj
: 
:        [,1] [,2]
:   [1,]   -1    1
:   [2,]   -2    2
:   [3,]   -7    6
:   [4,]   -8    7
:   [5,]   -6    5
:   [6,]   -9    8
:   [7,]   -5    4
:   [8,]    3   -3
:   [9,]  -10    9
: [10,]   -4    3
: 
: I want a diagnostic that detects whether a row is a multiple of
: the first row or not.  In this case, this would be rows 1,2, and 8.
: 
: How to do this nicely?  Sometimes the first row has a zero, so the
: method would have to work on
: 
:       [,1] [,2]
: [1,]    0    1
: [2,]    1    1
: [3,]    0    8
: [4,]    0   -4
: [5,]    0    0
: [6,]    4    0
:  >
: 
: in which case rows 1,3,4,5 are multiples.  It'd be nice to have
: a solution that works for any number of columns.


If rowi is a multiple of row1 then 
crossprod(cbind(row1, rowi)) is singular so:

apply(mat, 1, function(x) det(crossprod(cbind(x, mat[1,])))) == 0

If your matrix only has two columns then crossprod(x) is singular
iff x is so you can eliminate the crossprod.




More information about the R-help mailing list