我有一个具有正值和负值的avector,并希望将负值和正值分开加起来。
如果我这样做,我会添加具有正号的元素数量,但不会添加具有正值的元素值。
sum(x>0)
如何在向量
中分别添加正值和负值谢谢
答案 0 :(得分:5)
x>0
判断元素是否为正数:
> x <- c(-1, -10, 6, 7, -5)
> x>0
[1] FALSE FALSE TRUE TRUE FALSE # elements at positions 3 and 4 are positive
您现在可以使用which
来选择符合该条件的元素的索引:
> which(x>0)
[1] 3 4 # x[3] and x[4] meet the condition
其余的从那里开始:
> sum(x[which(x>0)])
[1] 13
> sum(x[which(x<0)])
[1] -16
R也适用于FALSE
- TRUE
的向量来索引向量,所以你也可以这样做:
> sum(x[x>0])
[1] 13
> sum(x[x<0])
[1] -16
答案 1 :(得分:1)
有几种可能性如下
w <- c(2, -2, 1, -4)
tapply(w, sign(w), sum)
# -1 1
# -6 3
c(sum(w[w > 0]), sum(w[w < 0]))
# [1] 3 -6
c(sum(w * (w > 0)), sum(w * (w < 0)))
# [1] 3 -6