私は2つのベクトルを取り、1つの要素の数を他のベクトルにも含めて返します。同様:n * m行列のすべての列の組み合わせでm * mの結果を返す関数
f <- function(v1,v2)sum(v1 %in% v2)
どのようにして、n個の* mの行列におけるm列のすべてのペアごとの組み合わせに、その関数を適用することができます。
set.seed(1)
m <- replicate(3, sample(letters[1:10], size = 5))
dimnames(m) <- list(NULL, paste0('c', 1:ncol(m)))
さて、
> m
[,1] [,2] [,3]
[1,] "c" "i" "c"
[2,] "d" "j" "b"
[3,] "e" "f" "f"
[4,] "g" "e" "j"
[5,] "b" "a" "e"
そして、最初の2つの列に機能を取る:
> f(m[,1], m[,2])
[1] 1 #'e' is shared.
すべての列の組み合わせでそれを行うには?結果は、am * m行列(結果が対角線の周りで対称である)であるか、v1、v2の列と関数の結果を持つlong形式のデータフレームである可能性があります(たとえば、最初の行はc1
、 c2
と3
)
私は機能outer
とexpand.grid
を調査しようとしましたが、解決策を見つけることができませんでした。
でこれを行うことができます 'crossprod(表(メートル、COL(M)))' –