我认为这是一个相当基本的问题,但我想看看是否有人能想出一个更优雅的解决方案。也许是通过避免for循环。
我想要一个函数,它以1和0的向量作为输入,并返回一个长度相同的向量,它计算相同数目的前几个位置。
这样做的一个相当不雅的方法是:
count_me <- function(x) {
count_vector <- numeric(length(x))
for(i in 2:length(x)) {
if(x[i] == x[i-1]) count_vector[i] <- count_vector[i-1] + 1
}
count_vector
}这正是我想要的:
> (p <- sample(c(0,1), size = 10, replace = TRUE))
[1] 0 1 0 1 1 0 0 1 1 1
> count_me(p)
[1] 0 0 0 0 1 0 1 0 1 2发布于 2016-05-02 15:00:07
我认为这样做是可行的:
sequence(rle(x)$lengths) - 1https://stackoverflow.com/questions/36985363
复制相似问题