R で 2 つのベクトルの一意の組み合わせをすべて見つける方法
次のいずれかの方法を使用して、R 内の 2 つのベクトルの要素の一意の組み合わせをすべて検索できます。
方法 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 を使用して一意の組み合わせを見つける
次のコードは、 TidyrパッケージのCrossing()関数を使用して、R の 2 つのベクトル間の要素の一意の組み合わせをすべて検索する方法を示しています。
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
その結果、2 つのベクトル間の要素の一意の組み合わせをすべて表示するデータ フレームが得られます。
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()関数は 3 つ以上のベクトルでも使用できることに注意してください。
必要な数のベクトルの名前をcrossing()関数に指定するだけで、一意の組み合わせの総数がわかります。
例 2: data.table を使用して一意の組み合わせを検索する
次のコードは、 data.tableパッケージのCJ()関数を使用して、R の 2 つのベクトル間の要素の一意の組み合わせをすべて検索する方法を示しています。
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
その結果、2 つのベクトル間の要素の一意の組み合わせをすべて表示するデータ フレームが得られます。
CJ()関数の結果は、crossing()関数の結果に対応することに注意してください。
CJ()関数は 3 つ以上のベクトルとともに使用することもできます。
CJ()関数に必要な数のベクトルの名前を指定するだけで、一意の組み合わせの合計数がわかります。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。
Rでグループごとに一意の値をカウントする方法
R でデータ フレーム内の単一行を選択する方法
dplyrを使用して個別の値をカウントする方法