7
votes

Obtenir toutes les combinaisons dans R, répétition autorisée

L'intégré COMMBN ne donne que la moitié des combinaisons: xxx

par exemple il n'y a pas (1,1) ni (2,1).

Comment puis-je obtenir toutes les combinaisons?


4 commentaires

Peut être expand.grid (repère (liste (1: 5), 2))


Vous pouvez également utiliser cj à partir de data.table pour une combinaison rapide.


COMMUN par définition vous donne simplement le triangle supérieur de la matrice combinaison, pour éviter la répétition. Pas la diagonale et pas le triangle inférieur.


FYI, c'est appelé le produit cartésien de de 1: 5 et 1: 5 .


3 Réponses :


9
votes

Comme @akrun a dit, il ressemble à expand.grid le fera. XXX


0 commentaires

4
votes

Vous pouvez obtenir le produit cartésien à l'aide de fusion code>: xxx pré>

sortie: p> xxx pré>

utilisant SQLDF CODE>: P>

df1 <- data.frame(a = 1:5)
df2 <- df1
sqldf("SELECT df1.a, df2.a FROM df1 
      CROSS JOIN df2")


0 commentaires

1
votes

Ceci est en fait appelé des permutations avec des éléments répétés. Outre les recommandations données, vous pouvez utiliser gtools :: permutations fonction: xxx


1 commentaires

Je pense que cela devrait être gtools :: combinaisons (5, 2, 1: 5, répéter.Allowed = true) Pour suivre la définition des combinaisons avec répétition autorisée, c'est-à-dire \ binom {n + k-1 } {k}