2017-06-26 7 views
0

に既存の5または6の数字持つすべての行:私は、マトリックスからの行のみを取得したいフィルターのような行列A有する他のマトリックス

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] ,15] [,16] [,17] [,18] 
[1,]  2 17 10 4 5 6 7 1 21 20 23 24 11 14  3 26 12 10 

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] 
[1,] 11 14 17 20 23 26 7 1 10  4 21  3 
[2,] 12 15 8 21 14 27 17 11 19  2  1  3 
[3,] 13 16 19 22 25 28 7 11 10  5 10  4 
[4,] 11 15 28 21 4 27 7 1 12 20 12 23 
[5,] 14 16 9 22 25 28 7 1 13 21 29  3 
[6,] 11 3 6 23 24 26 7 1 14 12 20  4 

など行列BをA行列Bには5または6の数字(5または6以上)がありません。 これを解決するために使用できるR関数はありますか?

私はそれが簡単に理解するために行います。 行列

1 2 3 4 5 
    2 3 5 6 7 
    3 5 7 8 1 
    2 7 5 4 3 

行列B:

1 2 4 5 6 
    2 4 1 3 7 
    3 5 7 9 8 
    5 8 9 2 6 

を私はAIの行と一致するようにBから5つの数字を求める場合には1(4行目を取得しますAの2列目のB)。

ので、これは私が取得するAIの行と一致するようにBから4つの数字を求める場合にのみ行A2

を返す必要があります。

B1 - A1 
    B2 - A1 
    B3 - A1, A2 
    B4 - A2 

ので、これが唯一の列A1、A2

答えて

2
を返す必要があります

あなたは、Aの各行についてBに入っている値の数を得ることができます:

counts <- apply(A,1,function(x) sum(!is.na(match(x,B))))

次に、あなたが使用してBに5つのまたは6の値を持つ行を取り戻すことができます。

A_bis <- A[which(counts %in% c(5,6)),]

これは正確に何をしたいではない場合は、which機能で別の条件を置くことができます。

関連する問題