我认为这是一个很基本的问题,但我想看看是否有更优雅的解决方案。也许可以避免使用for循环。
我希望有一个函数,它以由1和0组成的向量作为输入,并返回一个相同长度的向量,该向量计算了相同数字之前出现的次数。
一个相当不太优雅的方法是:
我希望有一个函数,它以由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