Comment trouver toutes les combinaisons uniques de deux vecteurs dans R
Vous pouvez utiliser l’une des méthodes suivantes pour rechercher toutes les combinaisons uniques d’éléments de deux vecteurs dans R :
Méthode 1 : utiliser Tidyr
library(tidyr) #find unique combinations of elements from vector1 and vector2 crossing(vector1, vector2)
Méthode 2 : utiliser data.table
library(data.table) #find unique combinations of elements from vector1 and vector2 CJ(vector1, vector2, unique=TRUE)
Les exemples suivants montrent comment utiliser chacune de ces méthodes dans la pratique.
Exemple 1 : Trouver des combinaisons uniques à l’aide de Tidyr
Le code suivant montre comment trouver toutes les combinaisons uniques d’éléments entre deux vecteurs dans R en utilisant la fonction crossing() du package Tidyr :
library(tidyr)
#define vectors
region=c('North', 'South', 'East', 'West')
points=c(0, 5, 10)
#display all unique combinations of region and points
crossing(region, points)
# A tibble: 12 x 2
region points
1 East 0
2 East 5
3 East 10
4 North 0
5 North 5
6 North 10
7 South 0
8 South 5
9 South 10
10 West 0
11 West 5
12 West 10
Le résultat est un bloc de données qui affiche toutes les combinaisons uniques d’éléments entre les deux vecteurs.
Nous pouvons voir qu’il existe 12 combinaisons uniques.
Si vous souhaitez uniquement connaître le nombre de combinaisons uniques, vous pouvez envelopper cette fonction avec la fonction nrow() :
library(tidyr)
#define vectors
region=c('North', 'South', 'East', 'West')
points=c(0, 5, 10)
#display number of unique combinations of region and points
nrow(crossing(region, points))
[1] 12
Notez que la fonction crossing() peut également être utilisée avec plus de deux vecteurs.
Fournissez simplement les noms d’autant de vecteurs que vous le souhaitez à la fonction crossing() pour trouver le nombre total de combinaisons uniques.
Exemple 2 : Trouver des combinaisons uniques à l’aide de data.table
Le code suivant montre comment trouver toutes les combinaisons uniques d’éléments entre deux vecteurs dans R en utilisant la fonction CJ() du package data.table :
library(data.table)
#define vectors
region=c('North', 'South', 'East', 'West')
points=c(0, 5, 10)
#display all unique combinations of region and points
CJ(region, points, unique=TRUE)
region points
1: East 0
2: East 5
3: East 10
4: North 0
5: North 5
6: North 10
7: South 0
8: South 5
9: South 10
10: West 0
11: West 5
12: West 10
Le résultat est un bloc de données qui affiche toutes les combinaisons uniques d’éléments entre les deux vecteurs.
Notez que les résultats de la fonction CJ() correspondent aux résultats de la fonction crossing() .
La fonction CJ() peut également être utilisée avec plus de deux vecteurs.
Fournissez simplement les noms d’autant de vecteurs que vous le souhaitez à la fonction CJ() pour trouver le nombre total de combinaisons uniques.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment compter les valeurs uniques par groupe dans R
Comment sélectionner des lignes uniques dans un bloc de données dans R
Comment compter des valeurs distinctes à l’aide de dplyr