7

配列のすべての組み合わせに特定の (カスタム) 関数を適用したいと考えています。例を挙げて説明するのが最善だと思います:

マトリックス 1 :

A B C
1 2 3

マトリックス 2 :

A B C  
4 5 6

私は次のことをしたいと思います: マトリックス 2 のすべての組み合わせを取得し、次のようにそれぞれに関数を適用します。

マトリックス 3 :

AB  AC  BC  CB  CA  BA  
4/2 4/3 5/3 6/2 6/1 5/1  

ここで、マトリックス 3 に適用される関数は、マトリックス 2 の対応する要素 (マトリックス 3 の各列の最初の文字で表される)/マトリックス 2 の対応する要素 (マトリックス 3 の各列の 2 番目の文字で表される) です。

不明な点があればお知らせください。完全に説明できていない可能性があります。

どんな助けでも大歓迎です!

ありがとう

マイク

4

2 に答える 2

2

これは、機能をインストールgtoolsして使用するだけで簡単に実行できpermutationsます。

require(gtools)
M1 <- list(A=1, B=2, C=3)
M2 <- list(A=4, B=5, C=6)

perms <- t(permutations(3, 2, 1:3))

comboList <- list()
for (i in 1:ncol(perms)) {
    nameString <- paste0(names(M2)[perms[1,i]], names(M1)[perms[2,i]])
    comboList[[i]] <- mapply("/", M2[[perms[,i][1]]], M1[[perms[,i][2]]])
}

mapply関数はかなり魔法の組み込み関数Rです。関数ファミリー全体を知ることは価値があり*applyます。

出力はcomboList次のとおりです。

> comboList
$AB
[1] 2

$AC
[1] 1.333333

$BA
[1] 5

$BC
[1] 1.666667

$CA
[1] 6

$CB
[1] 3
于 2013-10-07T10:30:24.467 に答える