创建数字向量x:
x <- c(1, 1, 1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1)
class(x)
将变量A分配给x的第一个值:
A <- x[1]
A
迭代x并将符号类似的元素添加到A:
for(i in 2:length(x)) {
if (sign(x[i]) == sign(x[i-1]))
{A <- A + x[i]}}
不知何故,A
变为4而不是3!任何帮助,为什么会发生这种情况非常感谢。
答案 0 :(得分:0)
使用rle
功能
x <- c(1, 1, 1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1)
A <- x[1]
out <- rle(x)
with(out, lengths[values == A])
# [1] 3 1 2 1 1 2 2 2
首先改变标志:
A <- with(out, lengths[values == A])[1]
A
# [1] 3
如果我们扭转迹象:
x <- -x
# [1] -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1
A <- x[1]
out <- rle(x)
A <- with(out, lengths[values == A])[1]
A
# [1] 3