La POO est très utilisée dans R même de base mais comme tous ce qui est POO, ce n'est pas visible à tous les coups, voir par exemple les méthodes summary, plot ou anova et aussi dans de nombreux packages sophistiqués. Ce qui complique un peu les choses c'est qu'il existe deux protocoles, l'ancien dit S3 très simple à utiliser et le S4 plus complexe et proche de la manière dont c'est géré dans des langages comme Java. On trouve facilement sur la toile la documentation pour utiliser ces deux approches. Le polymorphisme existe aussi en R mais pas la notion d'héritage au sens de Java.
Le problème du typage est commun à tous les langages interprétés dont MATLAB (qui peut aussi géré des classes) et Javascript. Ce n'est pas un véritable problème, il faut simplement être attentif au lieu d'espérer que ce soit la langage qui le soit à sa place.
Enfin, il ne faut pas oublier que R est un outil pour les statistiques et le traitement des données et non pas un langage généraliste comme le peuvent être Java ou C++ et donc, il faut l'utiliser à bon escient.
Pour ce qui est ton exemple, il existe des fonctions qui teste la classe d'une variable de type is.xxx qui retourne TRUE ou FALSE (par exemple is.numeric). Pour ta question sur comment 'rassembler' la fonction en une seule, on peut facilement jouer avec l'existence ou non de certains arguments de la fonction (que l'on peut tester ou qui ne sont évalué que s'ils sont utilisés dans le corps de la fonction) et/ou les valeurs par défaut. Par exemple,
pnorm_mean_ech_infsup_mean_pop_sn <- function(moyenne, ecart_type, moyenne_echantillon, n=1, inferieur)
fait que n vaut 1 si aucune valeur n'est donnée dans l'appel. Ce peut donc aussi être un argument supplémentaire à ta fonction pnorm_mean_ech_infsup_mean_pop_s.
A mon avis, ces trois points : valeur par défaut, évaluation tardive des arguments contrairement aux langages 'classiques' et appel possible des arguments par nom et non simplement par position sont les points forts de R mais, surtout le second point, demande un peu de pratique.
Partager