我想找一个大于特定数字的2/3/4/5/6连续数字出现在向量中的次数。对于例如对于以下向量
x=c(1,1,3,4,9,1,9,1,5,4,5,2,1,1,4,6)
计算两个连续数字的次数&gt; 3(4,9)&amp; (4,6)= 2 <连续三个数字> 3(例如5,4,5)= 1 依此类推4,5,6个连续数字
以下代码仅显示值连续出现的次数。
runs <- rle(x)
with(runs, table(values, lengths))
我真的很感激任何帮助。
由于 感谢
答案 0 :(得分:1)
尝试:
f1 <- function(vec, val, n){
rl <- rle(vec >val)
sum(rl$lengths[rl$values]==n)
}
f1(x, 3, 2)
#[1] 2
f1(x, 3, 3)
#[1] 1
或者一次性完成
sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==2)})
# [1] 1 2 0 0 0
sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==3)})
#[1] 2 1 0 0 0
sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==4)})
#[1] 0 0 0 0 0