Don't think this is "best", but here's one way: > mat <- matrix(1:12, 6) > mat [,1] [,2] [1,] 1 7 [2,] 2 8 [3,] 3 9 [4,] 4 10 [5,] 5 11 [6,] 6 12 > f <- function(x, y) x + y > apply(mat, 1, function(x) do.call("f", as.list(x))) [1] 8 10 12 14 16 18
Note that apply(mat, 1, f) won't work, because both values are passed to f in a single vector. Perhaps better alternatives are: 1. Re-write f so that it takes a single vector of two elements, or write a wrapper fw <- function(x) f(x[1], x[2]), then use fw in apply(). 2. Re-write f so that it's vectorized, so that f(mat[,1], fmat[,2]) works. HTH, Andy > -----Original Message----- > From: Bing Zhang [mailto:[EMAIL PROTECTED] > Sent: Wednesday, September 17, 2003 2:03 PM > To: r-help > Subject: [R] using matrix data for function > > > Hi All, > > I have a function, f(x,y) > I have a matrix of data, m, with the 1st column is x and the > 2nd column is y What's the best way to get f(x,y) for each > row of the matrix? I tried > result<-f(m[,1],m[,2]) but it doesn't work. > > Thanks! > > Bing > > --------------------------------- > 1060 Commerce Park > Oak Ridge National Laboratory > P.O. Box 2008, MS 6480 > Oak Ridge, TN 37831-6480 > Phone: 865-241-0761 > Email: [EMAIL PROTECTED] > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo> /r-help > ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help