Search code examples
rloopsmatrixdeterminants

How to perform complex looping operation on matrix


I have a sample matrix like

 5 4 3  
 2 6 8   
 1 9 7   

and I want output like

max(5*6,5*8,5*9,5*7)  // i!=j condition  
max(4*2,4*8,4*1,4*7)  
max(3*2,3*6,3*1,3*9)  

And so on...

This maximum values obtained after computation should be in matrix form. I need to generalize it, therefore I need a generic code.


Solution

  • This gets the job done but is a pretty unimaginative solution, in that it just loops through the rows and columns performing the requested calculation instead of doing anything vectorized.

    sapply(1:ncol(m), function(j) sapply(1:nrow(m), function(i) max(m[i,j]*m[-i,-j])))
    #      [,1] [,2] [,3]
    # [1,]   45   32   27
    # [2,]   18   42   72
    # [3,]    8   72   42
    

    Data:

    (m <- matrix(c(5, 2, 1, 4, 6, 9, 3, 8, 7), nrow=3))
    #      [,1] [,2] [,3]
    # [1,]    5    4    3
    # [2,]    2    6    8
    # [3,]    1    9    7