我有对象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
最好的方法是什么?名字匹配的某种条件会很棒。感谢
答案 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