3つの要素/行列(NFA、RX、LDC)があります。まず、NFAのすべての行を昇順に並べ替える必要があり、RXはNFAと同じ方法で注文する必要があります。これは機能します。しかし、その後、NFA因子を2つの群(G1とG2)に分けたいと思う。両方のグループは、第3因子LDCのスキームの後で新しい順序(別個に)にすべきである。私のコードは私に間違った並べ替えを与えますが、なぜ私は分かりません。3つ目の行列の後に2つの行列を並べ替える(%in%を使用)
データ
NFA<-matrix(c(4,9,5,3,1,7, 12,51,15,6,9,3, 9,5,1,11,3,8, 5,9,7,18,21,17),4,6,byrow=TRUE) RX<-matrix(c(1,3,7,1,5,4, 6,12,3,8,3,5, 4,4,5,34,8,2, 5,7,11,5,13,17),4,6,byrow=TRUE) LDC<-matrix(c(7,1,5,9,4,3, 12,51,6,3,9,15, 8,3,11,1,5,9, 9,5,7,18,17,21),4,6,byrow=TRUE) columns <- ncol(NFA)
第1選別:
C<-t(apply(NFA, 1, order)) NFA.neu <- matrix(NFA[cbind(c(row(NFA)), c(C))], ,columns) RX.neu <- matrix(RX[cbind(c(row(NFA)), c(C))], ,columns)
G1 <- 1:(columns/2); G2 <- (1+columns/2):columns
LDCのスキームの後にすべてのグループを発注3210
nfa <- NFA.neu[i,]; ldc <- LDC[i,]
o1 <- order(ldc[nfa %in% ldc[G1]])
o2 <- order(ldc[nfa %in% ldc[G2]]) + columns/2
o<-c(o1, o2)
NFA.neu[i,]<- NFA.neu[i, o]
RX.neu[i,]<- RX.neu[i, o]
}
問題はgroup1とgroup2の中に、私は間違った順序を持っているということです。
適切なソリューションは、次のようになります。
Solution<-matrix(c(1,4,3,7,5,9, 6,3,9,12,51,15, 3,1,5,8,11,9, 9,5,7,18,17,21),4,6,byrow=T)
たぶん誰かが私のためのヒントを持っていますか?私のミスはどこにあるのか分かりません。 、 マトリックス(C(1,3,4,5,7,9):
は、事前に
ヨルダン
私は完全にあなたの問題とソリューションのデータフレームを理解していないが、あなたはグループごとの順序を使用して、同様のC行列を取得します'apply(LDC、1、function(x、y)order(y、x)、c(rep(1,3)、rep(2,3)))'のようなアプローチで実装します。グループ化行を追加( 'rbind')し、これとターゲット行でソートします。 – Jimbou
あなたのヒントをありがとう。私の主な問題は、コード内のo1とo2の順序です。ここでは、LDCのシーケンスの後に行列 "NFA.neu"のすべての行を並べ替える必要があります。しかし、私の選別はLDCの順番ではないので、理由はわかりません。 – Jordan
OKですが、あなたの提供する 'Solution' Matrixが正しいと確信していますか? – Jimbou