[R] Using a mathematical expression in sapply() XXXX

Milan Bouchet-Valat nalimilan at club.fr
Wed Jan 4 14:57:27 CET 2012


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)


Regards



More information about the R-help mailing list