私はRで次のルックアップの問題があります(ただし、この用語を100%正しく使用するかどうかはわかりません)。行番号と列名が同一で、同じ順序(例えば、共分散行列のように)であるデータ点を有するmatrix
が与えられている。対応する値が行列内で検索されるべき行および列の名前の対のdata.frame
も与えられる。例示(および一般性のために非対称行列を使用して)する行列(R)の行/列の組み合わせの値を調べる方法は?
:
set.seed(1)
m = matrix(1:25,5,5)
colnames(m) <- c("A","B","C","D","E")
rownames(m) <- c("A","B","C","D","E")
l <- matrix(ncol=2,nrow=5)
for(i in 1:5){
l[i,] <- sample(c("A","B","C","D","E"),2,replace = FALSE) #choose TRUE if diagonal elements should be included in the list
}
l <- as.data.frame(l)
colnames(l) <- c("row","column")
そこで、マトリックス'm'とdata.frame l
を有する(m
とl
の行の等しい数が偶然であると冗長ペアは確かに>25
のために発生してもnrow(l)
)は、はるかに高いことができます
A B C D E
A 1 6 11 16 21
B 2 7 12 17 22
C 3 8 13 18 23
D 4 9 14 19 24
E 5 10 15 20 25
row column
1 B E
2 C D
3 B D
4 E C
5 D A
そして、我々は発見したアルゴリズムを求めて:
を> c(22,18,17,15,4)
私は、この問題がどのように正確に言及されているか、実際的な解決方法を指摘してくれることを嬉しく思います。
うわー、私はそれがマトリックスでサブセット化することが可能であることを知らなかった... – tomka
そのヘルプファイルは確かに通過する時間の価値があります。それはいくつかの隠された宝石を持っています。 – lmo