2014-06-23 71 views
0

我的问题是关于矩阵为R的公共列从米提取行我有两个矩阵r和m:v两个矩阵,基于R

m <- as.matrix(read.table(text=" 
15 56 44 1 4 7 
61 31 63 7 1 3 
10 36 99 5 9 6 
65 79 88 54 1 1")) 
colnames(m) <- c("Z","Q","A","F","D","H") 

r <- as.matrix(read.table(text=" 
15 56 64 
10 36 61 ")) 
colnames(r) <- c("Z","L","O") 

欲基于公共列中提取的行(在这种情况下为Z列),所以结果将是

A 

15 56 44 1 4 7 

10 36 99 5 9 6 

A是新矩阵。

任何想法如何?

+0

你尝试'合并(M,R)'? – zx8754

回答

0

只要做到:

> merge(x=m, y=r, by='Z') 
    Z Q A F D H L O 
1 10 36 99 5 9 6 36 61 
2 15 56 44 1 4 7 56 64 

要只保留列m

> merge(x=r, y=m, by='Z', sort=FALSE)[colnames(m)] 
    Z Q A F D H 
1 15 56 44 1 4 7 
2 10 36 99 5 9 6 
+0

非常感谢,我用第二个。 – user3767953

0

另外:

indx <- intersect(colnames(m), colnames(r)) 
m[m[,indx] %in% r[,indx],] 
# Z Q A F D H 
#[1,] 15 56 44 1 4 7 
#[2,] 10 36 99 5 9 6