我有两个带有时间序列数据的矩阵
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))
任何想法?
谢谢
答案 0 :(得分:2)
怎么样:
A[B>=3] <- NA
rowSums(A,na.rm=TRUE)
## [1] 3 1 7
或@Roland的建议(甚至更短):
rowSums(A*(B<3))
利用了TRUE
被强制为1而FALSE
在进行数值运算时被强制为0的事实......