Combinaisons possibles entre éléments d'un vecteur

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

Anthony Sturbois
Messages : 38
Enregistré le : 07 Nov 2019, 07:49

Combinaisons possibles entre éléments d'un vecteur

Messagepar Anthony Sturbois » 05 Mai 2020, 10:24

Bonjour
Je rencontre un petit soucis que je n'arrive pas à résoudre seul.
J'ai un vecteur de ce type
    X<-c("t1","t2","t3","t4","t5")

J'essaie d'obtenir l'ensemble des n combinaisons entre les éléments de ce vecteur [n<-(length(c)*(length(c)-1))/2]
et de coller le résultat dans un un vecteur contenant : t1t2,t1t3,t1t4,t1t5,t2t3,t2t4,t2t5,t3t4,t3t5,t4t5

J'ai fais des tentatives avec la fonction cmbn(), mais je n'arrive pas au résultat escompté.

Des idées?

merci d'avance

Anthony

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: Combinaisons possibles entre éléments d'un vecteur

Messagepar Fred Santos » 05 Mai 2020, 11:14

Salut,

Tu étais sur la bonne voie avec combn() :

Code : Tout sélectionner

> X <- c("t1", "t2", "t3", "t4", "t5")
> comb <- combn(X, 2)
> comb
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "t1" "t1" "t1" "t1" "t2" "t2" "t2" "t3" "t3" "t4"
[2,] "t2" "t3" "t4" "t5" "t3" "t4" "t5" "t4" "t5" "t5"


Si je comprends bien, il suffit désormais de faire ça ?

Code : Tout sélectionner

> paste0(comb[1,], comb[2,])
 [1] "t1t2" "t1t3" "t1t4" "t1t5" "t2t3" "t2t4" "t2t5" "t3t4"
 [9] "t3t5" "t4t5"

Anthony Sturbois
Messages : 38
Enregistré le : 07 Nov 2019, 07:49

Re: Combinaisons possibles entre éléments d'un vecteur

Messagepar Anthony Sturbois » 05 Mai 2020, 11:26

Oui c'est ça!!! merci
je venais de trouver une solution quoi fonctionne mais beaucoup plus longue avec trois boucles et sans combn() :-/
J'avais bloqué sur la sélection dans le return de combn effectivement
merci!

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

Re: Combinaisons possibles entre éléments d'un vecteur

Messagepar Logez Maxime » 05 Mai 2020, 16:15

Bonjour,

juste une précision, la fonction combn permet l'utilisation d'une fonction directement :

Code : Tout sélectionner

combn(X, 2, FUN = function(x) paste(x, collapse=""))
Après c'est pas dit que ce soit plus rapide ...

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité