我需要制作一个矩阵/数据框,其中包含两个向量中元素的所有组合。所有组合必须是唯一的,并包含不同的元素。我知道我可以使用以下内容列出所有组合:
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?我正在编写一个脚本来测试大麦基因之间的相互作用是非常冗长的,我想避免两次测试相同的组合。任何帮助都会受到赞赏。
答案 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"