[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