[R] matrix assembly

Robin Hankin r.hankin at noc.soton.ac.uk
Wed Nov 16 11:10:27 CET 2005


Hi

I have a function f(k,l) which returns a matrix for integer k and l.
I want to call f(.,.) for each combination of a supplied vector (as  
in expand.grid())
and then I want to assemble these matrices into one big one using
k and l to index the position of the submatrices returned by f(k,l).

Toy example follows.


f <- function(k,l){
matrix(k+l , k , l)
}

and I want to call f() with each combination of c(1,3)
for the first argument and c(2,4,5) for the second
and then assemble the resulting matrices.

I can do it piecemeal:

a <- c(1,3)
b <- c(2,4,5)
expand.grid(a,b)
   Var1 Var2
1    1    2
2    3    2
3    1    4
4    3    4
5    1    5
6    3    5
  cbind(rbind(f(1,2),f(3,2)) , rbind(f(1,4),f(3,4)) , rbind(f(1,5),f 
(3,5)))
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,]    3    3    5    5    5    5    6    6    6     6     6
[2,]    5    5    7    7    7    7    8    8    8     8     8
[3,]    5    5    7    7    7    7    8    8    8     8     8
[4,]    5    5    7    7    7    7    8    8    8     8     8

[see how the calls to f(. , .) follow the rows of expand.grid(a,b)]


How to do this in a nice vectorized manner?



--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743




More information about the R-help mailing list