R outer Function


outer() function applies a function to two arrays.

outer(x, y, FUN="*", ...)
x %o% y

x,y: arrays
FUN: function to use on the outer products, default is multiply
...

>x <- c(1,2.3,2,3,4,8,12,43)
>y<- c(2,4)

Calculate logarithm value of array x elements using array y as bases:
>outer(x,y,"log")
          [,1]      [,2]
 [1,] 0.000000 0.0000000
 [2,] 1.201634 0.6008169
 [3,] 1.000000 0.5000000
 [4,] 1.584963 0.7924813
 [5,] 2.000000 1.0000000
 [6,] 3.000000 1.5000000
 [7,] 3.584963 1.7924813
 [8,] 5.426265 2.7131324

Add array x elements with array y elements:
> outer(x,y,"+")
     [,1] [,2]
[1,]  3.0  5.0
[2,]  4.3  6.3
[3,]  4.0  6.0
[4,]  5.0  7.0
[5,]  6.0  8.0
[6,] 10.0 12.0
[7,] 14.0 16.0
[8,] 45.0 47.0

Multiply array x elements with array y elements:
> x %o% y  #equal to outer(x,y,"*")
     [,1]  [,2]
[1,]  2.0   4.0
[2,]  4.6   9.2
[3,]  4.0   8.0
[4,]  6.0  12.0
[5,]  8.0  16.0
[6,] 16.0  32.0
[7,] 24.0  48.0
[8,] 86.0 172.0

Concatenate characters to the array elements:
>z <- c("a","b")
>outer(x,z,"paste")
      [,1]    [,2]   
 [1,] "1 a"   "1 b"  
 [2,] "2.3 a" "2.3 b"
 [3,] "2 a"   "2 b"  
 [4,] "3 a"   "3 b"  
 [5,] "4 a"   "4 b"  
 [6,] "8 a"   "8 b"  
 [7,] "12 a"  "12 b" 
 [8,] "43 a"  "43 b"