在R中匹配和合并标头

时间:2015-08-27 15:54:02

标签: r matrix merge header match

在R中,我想匹配并合并两个矩阵。

例如,

> 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

然后,我想匹配矩阵A的标题和矩阵B的第1列。

最终结果应该是如下矩阵。

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

*(我的原始数据有超过500列和超过20,000行。)

有什么提示吗?真的很感谢你的帮助。

*事先,如果矩阵B如下所示,

> B
     col1 col2 col3 col4
  1   a    c    e    f  

在这种情况下如何制作矩阵C?

2 个答案:

答案 0 :(得分:1)

你想:

A[, c('ID', B[, 1])]

对于第二种情况,您希望使用第二个矩阵的第1行,而不是第一个列。

A[, c('ID', B[1, ])]

如果Bdata.frame而不是matrix,则语法会有所改变 - 您可以使用B$col1代替B[, 1],并选择在行中,您需要将结果转换为矢量,因为在data.frame中选择行的结果再次为data.frame,即您需要执行unlist(B[1, ])

答案 1 :(得分:0)

您可以使用子集:

cbind(A$ID, A[names(A) %in% B$col1])