我的目标是计算向量从正值变为负值的次数,反之亦然。例如,我会将其保存在“更改”下。例如。
randomvector <- c(0, 3, 2, -1, -4, -1, 2, 5, 8, 6, 3, 1, -2, -1, 1, 0, 3)
在这种情况下,“更改”为4(2后跟-1,-1后跟2、1后跟-2,-1后跟1)
到目前为止,这就是我所拥有的。
Point1 <- c(1:16)
Point2 <- c(2:17)
Number = 0
if(randomvector[Point1] >0 & randomvector[Point2]) {
Number = Number + 1
}
Number
所以从本质上讲,我的代码在说:如果randomvector的第一个值> 0,而randomvector的第二个值
这是我得到的:
Warning messages:
1: In if (randomvector[Point1] > 0 & randomvector[Point2]) { :
the condition has length > 1 and only the first element will be used
> Number
[1] 0
我了解0的输出,因为代码在if语句中遇到错误后没有运行。我也理解错误,即if语句不适用于矢量对象。我不确定该如何攻击,或者我是否正在使用最佳方法,我不确定。如果不是,请使用完全错误的方法告诉我。
谢谢 !
最佳答案
一种方法是测试连续值sign
的绝对差为2
sum(abs(diff(sign(randomvector))) == 2)
# 4
以来
sign(randomvector)
# [1] 0 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 0 1
和
diff(sign(randomvector))
# [1] 1 0 -2 0 0 2 0 0 0 0 0 -2 0 2 -1 1