1

2 つのベクトルの要素のすべての組み合わせを含むマトリックス/データ フレームを作成する必要があります。すべての組み合わせは一意である必要があり、異なる要素が含まれている必要があります。以下を使用して、すべての組み合わせのリストを作成できることを知っています。

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 でこれを行う簡単な方法はありますか?大麦の遺伝子間の相互作用をテストするスクリプトを書いていますが、これは非常に長いため、同じ組み合わせを 2 回テストすることは避けたいと考えています。

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 に答える