for循环在R

时间:2015-10-31 00:25:39

标签: r for-loop

创建数字向量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!任何帮助,为什么会发生这种情况非常感谢。

1 个答案:

答案 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