3

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

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))

有任何想法吗?

谢谢你

4

1 回答 1

2

怎么样:

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

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

rowSums(A*(B<3))

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

于 2013-06-17T15:11:12.840 回答