如何在 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 中执行其他常见任务:

如何在R中按组计算唯一值
如何在R中的数据框中选择单行
如何使用 dplyr 计算不同值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注