On 9/2/07, Paul Smith <[EMAIL PROTECTED]> 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")

The complete code can be:

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)

a <- vector()

for (i in 1:nrow(combs))
  a[i] <- fun(combs[i,1],combs[i,2])

m <- matrix(a,3,3)
rownames(m) <- x
colnames(m) <- y

m

Paul

______________________________________________
[email protected] 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.

Reply via email to