Re: [R] addition of matrix

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue, 19 Feb 2008 16:59:40 -0500

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.
>



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. Received on Tue 19 Feb 2008 - 22:03:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Feb 2008 - 22:30:16 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive