2015-08-27 6 views
0

Dans R, je souhaite faire correspondre et fusionner deux matrices.Correspondance, fusion, recherche d'une valeur dupliquée dans R

Par exemple,

> A 
    ID a b c d e f g 
    1 ex 3 8 7 6 9 8 4 
    2 am 7 5 3 0 1 8 3 
    3 ple 8 5 7 9 2 3 1 

> B 
    col1 
    1 a 
    2 c 
    3 e 
    4 f 

Ensuite, je veux correspondre en-tête de la matrice A et 1ère colonne de la matrice B.

J'ai donc fait

> C<-A[, c('ID', B[, 1])] 

et le résultat final était comme ci-dessous.

> C 
    ID a c e f 
    1 ex 3 7 9 8 
    2 am 7 3 1 8 
    3 ple 8 7 2 3 

Cependant, si la matrice B a certaines valeurs qui ne sont pas dans la matrice A comme ci-dessous,

> B 
    col1 
    1 a 
    2 c 
    3 e 
    4 f 
    5 x 
    6 y 

Il dit «hors limites indice.

Comment puis-je éviter ce problème?

(Comment extraire des colonnes dupliquées seulement?)

+0

Si vous utilisez réellement des matrices et non data.frames, s'il vous plaît le démontrer en faisant votre question reproductible. Conseils ici: http://stackoverflow.com/a/28481250/1191259 – Frank

Répondre

0

Voir si cela fonctionne:

C<-A[, c('ID', colnames(A)[colnames(A) %in% B[,1]])] 
+3

Je pense que 'intersect (colnames (A), B [, 1])' est plus naturel. – Frank