Comment "réduire" une matrices de décision booléennes ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Olivier BUHARD
Messages : 11
Enregistré le : 29 Oct 2010, 11:28

Comment "réduire" une matrices de décision booléennes ?

Messagepar Olivier BUHARD » 05 Juil 2017, 09:18

bonjour,
j'ai une question que certains trouveront sûrement triviale, je n'ai rien trouvé de mon côté sur une fonction dans R qui permettrait de transformer une matrice booléenne/logique (TRUE/FALSE ou 1/0) en une "synthèse" booléenne unique en fonction de son contenu global.
Pour faire simple, une matrice qui contient au moins une valeur TRUE est réduite en une valeur TRUE, FALSE sinon (voire NA si aucune cellule de la matrice n'est renseignée). Selon les exemples suivants :

r1 TRUE FALSE
r2 FALSE FALSE donnera TRUE car au moins un élément vaut TRUE

r1 FALSE NA
r2 NA NA
r3 FALSE FALSE donnera FALSE car aucun TRUE présent et au moins un élément vaut FALSE

r1 NA NA donnera NA

Je précise que les dimensions de la matrice ne sont pas figées. Y a t'il une fonction simple pour cela, ou dois-je en créer une ?

Merci
INSERM U938/ CDR Saint Antoine, Paris 12ème

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Comment "réduire" une matrices de décision booléennes ?

Messagepar Pierre-Yves Berrard » 05 Juil 2017, 09:42

Bonjour,
Olivier BUHARD a écrit :Y a t'il une fonction simple pour cela, ou dois-je en créer une ?

?any

(combiné avec apply s'il faut "réduire" par lignes ou par colonnes)
PY

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Comment "réduire" une matrices de décision booléennes ?

Messagepar Logez Maxime » 05 Juil 2017, 13:35

Bonjour,

any est a combiné avec un if else au cas ou tu n'aurais que des NA :

Code : Tout sélectionner

mat <- matrix(c(F, NA, F, NA, NA, F),3)
u <- if (all(is.na(mat))) NA else any(mat, na.rm = TRUE)
u
[1] FALSE
Cordialement,
Maxime

Olivier BUHARD
Messages : 11
Enregistré le : 29 Oct 2010, 11:28

Re: Comment "réduire" une matrices de décision booléennes ?

Messagepar Olivier BUHARD » 14 Aoû 2017, 20:02

Et oui bien sûr (avec du retard) ! A force travailler surtout avec des packages, on oublie certaines fonctions de base pourtant bien pratique, sont là pour faire les choses simplement.... donc any et all dans 2 ifelse imbriqués et c'est gagné.

Merci à vous 2 pour m'avoir mis sur la bonne piste.

Bien cordialement,
Olivier
INSERM U938/ CDR Saint Antoine, Paris 12ème


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité