[R] Function modification: how to calculate values for every combination?

Paul Smith phhs80 at gmail.com
Sun Sep 2 13:02:06 CEST 2007


On 9/2/07, Lauri Nikkinen <lauri.nikkinen at iki.fi> wrote:
> I have a function like this:
>
> fun <- function (x, y) {
>           a <- log(10)*y
>           b <- log(15)*x
>           extr <- a-b
>           extr
>           }
>
> fun(2,3)
> [1] 1.491655
>
> x <- c(1,2,3)
> y <- c(4,5,6)
> fun(x, y)
> [1] 6.502290 6.096825 5.691360
>
> How do I have to modify my function that I can calculate results using
> every combination of x and y? I would like to produce a matrix which
> includes the calculated values in every cell and names(x) and names(y)
> as row and column headers respectively. Is the outer-function a way to
> solution?

Try the following code and adapt it to fill the matrix:

fun <- function (x, y) {
         a <- log(10)*y
         b <- log(15)*x
         extr <- a-b
         extr
}

x <- c(1,2,3)
y <- c(4,5,6)

combs <- expand.grid(x,y)

for (i in 1:nrow(combs))
  cat(fun(combs[i,1],combs[i,2]),"\n")

Paul



More information about the R-help mailing list