2014-10-10 34 views
0

我想查找大於特定數字的2/3/4/5/6連續數字出現在向量中的次數。對於例如以下矢量根據一定的標準檢查連續值出現的次數

x=c(1,1,3,4,9,1,9,1,5,4,5,2,1,1,4,6) 

計數的次數兩個連續的數字是> 3(4,9)&(4,6)= 2 三個連續數字> 3(例如5,4,5)= 1 等等4,5,6個連續號碼

以下代碼只給出了一次值連續出現的次數。

runs <- rle(x) 
with(runs, table(values, lengths)) 

我真的很感激任何幫助。

感謝 感謝

回答

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