On Jan 4, 2012, at 14:57 , Milan Bouchet-Valat wrote: > Le mercredi 04 janvier 2012 à 08:41 -0500, Dan Abner a écrit : >> Hello everyone, >> >> I have the following call to sapply() and error message. Is the most >> efficient way to deal with this to make sum(!is.na(x)) a function in a >> separate line prior to this call? If not, please advise. >> >> N.Valid=sapply(x,sum(!is.na(x))) >> Error in match.fun(FUN) : >> 'sum(!is.na(x))' is not a function, character or symbol > You can use this: > sapply(x, function(x) sum(!is.na(x))) > > But, if you can convert x to a matrix, it would be faster and shorter to > check for NAs beforehand, and use apply(): > x <- matrix(c(1, 2, NA, 3, NA, 4), 2) > apply(!is.na(x), 2, sum)
Just for completeness: You might also do sapply(lapply(x, is.na), sum) I suspect that the anonymous function approach is more efficient, though (if you really need those extra milliseconds of your life). > > > Regards > > ______________________________________________ > 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. -- Peter Dalgaard, Professor Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ 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.