如何根据R中矩阵的名称进行矩阵或向量乘法

时间:2014-07-17 11:08:48

标签: r vector matrix match

我有对象a(第一行是名字):

26/03/2012  02/04/2012  09/04/2012  16/04/2012  23/04/2012  30/04/2012  07/05/2012  14/05/2012
10          20          50          20          10           0          3          15

对象b(第一行是名称):

16/04/2012  23/04/2012  30/04/2012  07/05/2012
6           20          8           2

我想做一个简单的乘法,但是根据名称匹配的位置 即我希望输出

16/04/2012  23/04/2012  30/04/2012  07/05/2012
120         200         0           6

最好的方法是什么?名字匹配的某种条件会很棒。感谢

1 个答案:

答案 0 :(得分:2)

一种方法是找到两个向量中显示的名称,并使用这些通用名称来选择每个向量中的元素:

v1 <-c(10, 20, 50, 20, 10, 0, 3, 15)
names(v1) <- c("26/03/2012", "02/04/2012", "09/04/2012", "16/04/2012", "23/04/2012", 
"30/04/2012", "07/05/2012", "14/05/2012")
v2 <- c(6, 20, 8, 2)
names(v2) <- c("16/04/2012", "23/04/2012", "30/04/2012", "07/05/2012")
id <- intersect(names(v1), names(v2))
v1[id] * v2[id]
# 16/04/2012 23/04/2012 30/04/2012 07/05/2012 
#        120        200          0          6