この質問はフォローアップの対象ですprevious question ローカルの最大値でブロックを正規化するのではなく、ブロックの最大値でブロックを正規化します。ブロックに対応する。 Iとの間ブロック正規化したいブロック間をブロックに対応するブロックの最大値で正規化する
#dummy data
mat <- matrix(round(runif(90, 0, 50),),9,9)
rownames(mat) <- rep(LETTERS[1:3],3)
colnames(mat) <- rep(LETTERS[1:3],3)
#Normalizes within and between blocks by the maxima of the focal block
ans <- mat/ave(mat, rownames(mat)[row(mat)], colnames(mat)[col(mat)], FUN = max)
#Number of blocks
sum(ans == 1)
#[1] 9
、即ち、AB
、AC
、BA
、BC
、列に対応するブロックの最大値によってCA
、CB
。例えば、AB
の場合との間のブロックAB
ないこのブロックの最大値によって正規化する。この場合、CC
等
> mat[rownames(mat)=="A",colnames(mat)=="B"]
B B B
A 26 26 14
A 12 11 18
A 44 44 29
> mat[rownames(mat)=="B",colnames(mat)=="B"]
B B B
B 9 23 20
B 28 45 28
B 14 12 45
にmax()
によってBB
でmax()
、及びAC
ことによってそれを正規化(すなわち44)であるが、ブロックBB
(すなわち45)の最大値である。
すべてのポインタが高く評価されています!
美しいです!どうもありがとう! –