n <- length(rle(sign(z)))
z包含1和-1。 n应表示z符号变化的次数。
上面的代码不会产生预期的结果。如果我将命令扩展为
length(rle(sign(z))[[1]])
它有效。我不理解[[1]]如何解决这个问题的潜在机制?
答案 0 :(得分:2)
rle
会返回一个包含两个组件的列表:lengths
和values
。因此,它自己的length
总是2.相比之下,你想知道这些组件中任何一个的长度(它们显然具有相同的长度)。因此,length(rle(…)[[1]])
或length(rle(…)[[2]])
都可以。最好使用名称而不是索引,例如
length(rle(z)$lengths)
但是,这不会是符号变化的次数;相反,它将是变化加1的次数。