[R] Function modification: how to calculate values for every combination?
Paul Smith
phhs80 at gmail.com
Sun Sep 2 13:16:59 CEST 2007
On 9/2/07, Paul Smith <phhs80 at gmail.com> 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
More information about the R-help
mailing list