Thanks for pointing that out. Mike
On Tue, Mar 26, 2013 at 6:53 PM, David Winsemius <dwinsem...@comcast.net>wrote: > > On Mar 26, 2013, at 2:51 PM, C W wrote: > > > Dear list, > > > > I am a little confused as to when to use apply, sapply, tapply, vapply, > > replicate. I've encountered this several times, > > This is time, this is what I am working on, > > > > mat <- matrix(c(seq(from=1, to=10), rnorm(10)), ncol=2) > > > > a=1; b=5 > > > > newfun <- function(x, y, a, b) > > > > { > > > > x*y+a+b > > > > } > > > > sapply(i=1:10, newfun(x=mat[i, 1], y=mat[i, 2], a=a, b=b)) > > > > Error in match.fun(FUN) : argument "FUN" is missing, with no default > > > > I want to use ith row of mat, evaluate newfun(). Am I making a parameter > > mistake, > > There is nothing that would naturally "catch" the values. After they are > evaluated sequentially by `sapply` the values 1:10 no longer are named "i" > and so don't naturally fall into the slots you thought you had constructed > for them. By constructing an anonymous function with any formal argument > name (as already demonstrated by another poster) you could get to use > positional matching. > > > or should I use a different apply function? > > Yes, "some other function" since all those operations are vectorized, this > could be more easily done with: > > mat[ ,1]*mat[ ,2]+a+b # and no need for a loop, right? > > -- > > David Winsemius > Alameda, CA, USA > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org 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.