如何在 r 中找到两个向量的所有唯一组合
您可以使用以下任何一种方法来查找 R 中两个向量的元素的所有唯一组合:
方法一:使用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 中两个向量之间的所有唯一元素组合:
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 查找唯一组合
以下代码演示了如何使用data.table包中的CJ()函数查找 R 中两个向量之间的所有唯一元素组合:
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 中执行其他常见任务: