Як знайти всі унікальні комбінації двох векторів у r
Ви можете використовувати будь-який із наведених нижче методів, щоб знайти всі унікальні комбінації елементів двох векторів у R:
Спосіб 1: Використовуйте Tidyr
library (tidyr) #find unique combinations of elements from vector1 and vector2 crossing(vector1, vector2)
Спосіб 2. Використовуйте data.table
library (data.table) #find unique combinations of elements from vector1 and vector2 CJ(vector1, vector2, unique= TRUE )
Наступні приклади показують, як використовувати кожен із цих методів на практиці.
Приклад 1: Пошук унікальних комбінацій за допомогою Tidyr
Наступний код показує, як знайти всі унікальні комбінації елементів між двома векторами в R за допомогою функції crossing() із пакету Tidyr :
library (tidyr)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=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
9South 10
10 West 0
11 West 5
12 West 10
Результатом є кадр даних, який відображає всі унікальні комбінації елементів між двома векторами.
Ми бачимо, що є 12 унікальних комбінацій.
Якщо ви хочете знати лише кількість унікальних комбінацій, ви можете обернути цю функцію за допомогою функції nrow() :
library (tidyr)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=c(0, 5, 10)
#display number of unique combinations of region and points
nrow(crossing(region, points))
[1] 12
Зауважте, що функцію crossing() також можна використовувати з більш ніж двома векторами.
Просто надайте імена будь-якої кількості векторів у функцію crossing() , щоб знайти загальну кількість унікальних комбінацій.
Приклад 2: Знайдіть унікальні комбінації за допомогою data.table
Наступний код показує, як знайти всі унікальні комбінації елементів між двома векторами в R за допомогою функції CJ() із пакета data.table :
library (data.table)
#definevectors
region=c(' North ', ' South ', ' East ', ' West ')
dots=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
Результатом є кадр даних, який відображає всі унікальні комбінації елементів між двома векторами.
Зверніть увагу, що результати функції CJ() відповідають результатам функції crossing() .
Функцію CJ() також можна використовувати з більш ніж двома векторами.
Просто введіть імена будь-якої кількості векторів у функцію CJ() , щоб знайти загальну кількість унікальних комбінацій.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в R:
Як підрахувати унікальні значення по групі в R
Як вибрати окремі рядки у кадрі даних у R
Як підрахувати різні значення за допомогою dplyr