[R] matrix and a function - apply function

David Winsemius dwinsemius at comcast.net
Wed Feb 2 16:05:21 CET 2011


On Feb 2, 2011, at 9:12 AM, ADias wrote:

>
> Hi
>
> I have this function and this matrix:
>
> function(x,y) x+y/x
>
> m<-matrix(c(1,2,4,2,10,8),3,2)
>
>> m
>     [,1] [,2]
> [1,]    1    2
> [2,]    2   10
> [3,]    4    8
>
> each row represent a point (x,y) in a chart and I want via my  
> fucntion to
> calculate the image in order to get this results:
>
> for point (1,2) I would get 1+2/1 = 3
> for point (2,10) I would get 2+10/2 = 7
> for point (4,8) I would get 4+8/4 = 6
>
> I have tried using sapply here but I get this:
>
>> sapply(m,function(x,y) x+y/x)
> Error in y/x : 'y' is missing

I'm not sure what sapply does with a matrix argument. I've only used t  
with vectors and lists.  I suspect that it would straighten out the  
argument to a length = 6 vector. (And then, of course, the "y"  
wouldn't be there.)


>
> what I am doing wrong?

Two things: instead use apply() and realize that the argument is  
passed as a vector

apply(m, 1, function(x) x[1] +x[2]/x[1] )


-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list