以不同顺序检测具有相同元素的行

时间:2013-06-25 21:04:02

标签: r

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

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行是“牛,狗”和“狗,牛”。有一种简单的方法可以在R?我正在编写一个脚本来测试大麦基因之间的相互作用是非常冗长的,我想避免两次测试相同的组合。任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分: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"