1

我需要制作一个矩阵/数据框,其中包含两个向量中元素的所有组合。所有组合都必须是唯一的,并且包含不同的元素。我知道我可以使用以下内容列出所有组合:

a<-c("cat","dog","cow")
b<-c("dog","cow","sheep")
combination<-as.matrix(expand.grid(a,b))

而且我可以使用以下方法删除两个元素相同的条目:

combination1<-combination[combination[,1]!=combination[,2],]

这给出了以下输出:

> combination1
     Var1  Var2   
[1,] "cat" "dog"  
[2,] "cow" "dog"  
[3,] "cat" "cow"  
[4,] "dog" "cow"  
[5,] "cat" "sheep"
[6,] "dog" "sheep"
[7,] "cow" "sheep"

我需要的是检测/删除具有相同字符串但顺序不同的行(第 2 行和第 4 行是“cow,dog”和“dog,cow”。在 R 中是否有一种简单的方法可以做到这一点?我'正在编写一个脚本来测试大麦中基因之间的相互作用,这非常冗长,我想避免两次测试相同的组合。任何帮助将不胜感激。

4

1 回答 1

1

您可以尝试对行进行排序,然后取唯一的行:

>combination1 <- unique(t(apply(combination, 1, sort)))
>combination1
     [,1]  [,2]   
[1,] "cat" "dog" 
[2,] "dog" "dog"  
[3,] "cow" "dog"  
[4,] "cat" "cow"  
[5,] "cow" "cow"  
[6,] "cat" "sheep"
[7,] "dog" "sheep"
[8,] "cow" "sheep"
于 2013-06-26T07:53:17.843 回答