[R] addition of matrix

Gabor Grothendieck ggrothendieck at gmail.com
Tue Feb 19 22:59:40 CET 2008


This is your original problem:

f <- function(x, y) as.vector(outer(x, y, "/"))
mapply(f, as.data.frame(t(X)), as.data.frame(t(Y)))

so just replace "/" with whatever function of two
variables you like.  See ?outer and be sure your
function replacing "/" is vectorizable as noted there.


On Feb 19, 2008 2:07 PM, Marlin Keith Cox <marlinkcox at gmail.com> wrote:
> Thank you ahead of time for help with this.
>
>
> I have two matrices
>
> X
>
>  [,1]   [,2]  [,3]   [,4]  [,5]   [,6]
>  [1,]  660 693.00 726.0 759.00 792.0 825.00
>  [2,]  548 575.40 602.8 630.20 657.6 685.00
>  [3,]  676 709.80 743.6 777.40 811.2 845.00
>  [4,]  763 801.15 839.3 877.45 915.6 953.75
>  [5,]  768 806.40 844.8 883.20 921.6 960.00
>  [6,]  692 726.60 761.2 795.80 830.4 865.00
>  [7,]  657 689.85 722.7 755.55 788.4 821.25
>  [8,]  630 661.50 693.0 724.50 756.0 787.50
>  [9,]  748 785.40 822.8 860.20 897.6 935.00
> [10,]  680 714.00 748.0 782.00 816.0 850.00
>
> and
>
> Y
>
>       [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
>  [1,]  1369.00  1396.517  1424.308  1452.372  1480.710  1509.323
>  [2,]  1521.00  1551.572  1582.448  1613.629  1645.114  1676.903
>  [3,]  1521.00  1551.572  1582.448  1613.629  1645.114  1676.903
>  [4,]  1521.00  1551.572  1582.448  1613.629  1645.114  1676.903
>  [5,]  1600.00  1632.160  1664.640  1697.440  1730.560  1764.000
>  [6,]  1722.25  1756.867  1791.829  1827.135  1862.786  1898.781
>  [7,]  1936.00  1974.914  2014.214  2053.902  2093.978  2134.440
>  [8,]  2025.00  2065.703  2106.810  2148.323  2190.240  2232.563
>  [9,]  2116.00  2158.532  2201.486  2244.864  2288.666  2332.890
> [10,]  2209.00  2253.401  2298.244  2343.528  2389.254  2435.423
>
> Each row (1-10) is an individual and columns 1-6 are treatments to each
> individual.  I need to look at interactions between the two variables X and
> Y, by rows
>
> example
> 1369 + (660*1369 ^ -1)
> 1396.517 + (660*1396.517 ^ -1)
> 1424.308 + (660*1424.308 ^ -1)
>
> ...
> 1369 + (693*1369 ^ -1
> 1396.517 + (693*1396.517 ^ -1
> 1424.308 + (693*1424.308 ^ -1
> ...
> etc.
>
> so each row would yield 36 numbers.
>
> I have the following which works for X/Y, but I need Y+X/Y
>
> num.x.col <- length(X[1,])
> num.y.col <- length(Y[1,])
> num.rows <- length(X[,1])
>
> Z <- matrix(nrow=num.rows, ncol=num.x.col*num.y.col)
>
> for( i in 1:num.rows)  {
>       Z[i,] <- as.vector(X[i,] %*% t(Y[i,])^-1 )
> }
>
> Any help with making this be Y + X/Y would be appreciated.
>
> --
> Keith Cox, Ph.D.
> Sitka Sound Science Center
> Fisheries Biologist
> P.O. Box 464
> Sitka, Alaska, 99835
>
> 907 752-0563
> marlinkcox at gmail.com
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list