在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?
答案 0 :(得分:1)
你想:
A[, c('ID', B[, 1])]
对于第二种情况,您希望使用第二个矩阵的第1行,而不是第一个列。
A[, c('ID', B[1, ])]
如果B
是data.frame
而不是matrix
,则语法会有所改变 - 您可以使用B$col1
代替B[, 1]
,并选择在行中,您需要将结果转换为矢量,因为在data.frame
中选择行的结果再次为data.frame
,即您需要执行unlist(B[1, ])
。
答案 1 :(得分:0)
您可以使用子集:
cbind(A$ID, A[names(A) %in% B$col1])