12

データ フレームには、文字列を含む列が 1 つあります。次のように見えるとしましょう。

x <- unique(df[,1])
x
"A" "A" "B" "B" "B" "C"

固有の文字列の可能な組み合わせすべてを順序を気にせずに 2 のセットとして取得したいのでA, Bと同じでB, A、 のような組み合わせと同じ値を取得したくありませんA, A。これまでのところ、私はこの時点まで得ました:

comb <- expand.grid(x, x)
comb <- comb[which(comb[,1] != comb[,2]),]

ただし、これには、同じ文字列の組み合わせの行が異なる順序で含まれるという問題が残ります。どうすればこれを取り除くことができますか?

4

2 に答える 2

21

パッケージにはcombn関数があります:utils

t(combn(LETTERS[1:3],2))
#      [,1] [,2]
# [1,] "A"  "B" 
# [2,] "A"  "C" 
# [3,] "B"  "C"

x値が重複している理由について少し混乱しています。

于 2012-09-03T09:35:30.553 に答える
12

私はあなたが探していると思いますcombn

x <- c("A", "A", "B", "B", "B", "C")
combn(x,2)

与えます:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] "A"  "A"  "A"  "A"  "A"  "A"  "A"  "A"  "A"  "B"   "B"   "B"   "B"   "B"   "B"  
[2,] "A"  "B"  "B"  "B"  "C"  "B"  "B"  "B"  "C"  "B"   "B"   "C"   "B"   "C"   "C"  

そして、一意の値のみが必要な場合(呼び出しの結果である場合、最初にx値が重複している理由がわかりません):xunique()

> combn(unique(x),2)
     [,1] [,2] [,3]
[1,] "A"  "A"  "B" 
[2,] "B"  "C"  "C" 
于 2012-09-03T09:34:56.917 に答える