两个矩阵的R中的sumif函数

时间:2013-06-17 14:55:58

标签: r matrix

我有两个带有时间序列数据的矩阵

A
2 1 0
0 1 6
1 4 6

B 
1 1 3
4 2 8
2 5 1

我想创建一个比较A和B并满足以下条件的向量:

如果B <3,则将符合标准的A的元素的总和加起来 所以我的结果矩阵应该是

C
3 (=2+1)
1
7 (=1+6) 

我试图按照以下方式进行,但我无法获得正确的结果

posneg_fun<-function(x,y)
{
  new<-sum(x[y<3])
  return(new)
}

out<-t(apply(x,1,FUN=posneg_fun,y))

任何想法?

谢谢

1 个答案:

答案 0 :(得分:2)

怎么样:

A[B>=3] <- NA
rowSums(A,na.rm=TRUE)
## [1] 3 1 7

或@Roland的建议(甚至更短):

rowSums(A*(B<3))

利用了TRUE被强制为1而FALSE在进行数值运算时被强制为0的事实......