##################################################################################### nbNApct <- function(v) { ##################################################################################### # calcule du nombre de données NA dans un vecteur et calcul du pourcentage correspondant # (on ne teste pas si le vecteur est vide) nbna <- sum(is.na(v)) pct <- 100*nbna/length(v) # on pourrait utiliser une liste avec # return(list(nbNA=nbna,pctNA=pct)) # mais un vecteur nommé est "mieux en retour" vres <- c(nbna,pct) names(vres) <- c("nbNA","pctNA") return(vres) } # fin de fonction nbNApct ##################################################################################### # # exemples d'utilisation : # ##################################################################################### cat(" pour un vecteur quelconque : \n") print( nbNApct( c(1,3,8,NA,2,NA,5) ) ) cat(" pour age : \n") library(gdata) age <- read.xls("essai.xls")$AGE print( nbNApct( age )) cat(" pour toutes les colonnes d'un data frame\n") data <- read.xls("essai.xls") print( apply(X=data,F=nbNApct,M=2) ) # et avec une matrice : md <- matrix(round(100*runif(15)), nrow=5,ncol=3) md[4,2] <- md[1,2] <- NA print(md) print( apply(X=md,F=nbNApct,M=2) )