rle命令计数向量中的变化

时间:2016-10-14 17:29:59

标签: r

n   <- length(rle(sign(z))) 

z包含1和-1。 n应表示z符号变化的次数。

上面的代码不会产生预期的结果。如果我将命令扩展为

length(rle(sign(z))[[1]])

它有效。我不理解[[1]]如何解决这个问题的潜在机制?

1 个答案:

答案 0 :(得分:2)

rle会返回一个包含两个组件的列表:lengthsvalues。因此,它自己的length总是2.相比之下,你想知道这些组件中任何一个的长度(它们显然具有相同的长度)。因此,length(rle(…)[[1]])length(rle(…)[[2]])都可以。最好使用名称而不是索引,例如

length(rle(z)$lengths)

但是,这不会是符号变化的次数;相反,它将是变化加1的次数。