bundan varsayalım 1 ve 0 bir sekansı içeren bir vektör, uzunluğu 166 olan ve bu ayıklamak için istiyorum Şimdibulma Alt vektör 0 '
y <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, 1,1,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,1,1,1,1)
olduğu Bu iki özellik
sağlayacağı şekilde, vektör üzerinden bir en uzun alt vektör(1) alt vektör 1'den başlar ve toplam 1.
(2) Bu içerebilir% 5'e kadar ihtiva sıfırlarla sona ermelidir alt vektörün uzunluğu.
rle
işleviyle başlattım. Her adımda 1 ve 0 sayar. Bana 74 + 2 + 17 + 1 + 2 + 3 = 99 bu gerekli alt dizisini içerir Bu durumda
> d
value length
1 1 22
2 0 1
3 1 13
4 0 1
5 1 2
6 0 1
7 1 1
8 0 1
9 1 1
10 0 5
11 1 1
12 0 3
13 1 2
14 0 1
15 1 1
16 0 1
17 1 74
18 0 2
19 1 17
20 0 1
21 1 2
22 0 1
23 1 3
24 0 5
25 1 4
verir
z <- rle(y)
d <- data.frame(z$values, z$lengths)
colnames(d) <- c("value", "length")
gibi yüzden olacak 2+ 1 + 1 = 4 sıfır, 99'un% 5'inden azdır. Eğer ileriye doğru hareket edersek ve sıra 99 + 5 + 4 = 108 olacak ve sıfırlar 4 + 5 = 9 olacak, bu da 108'in% 5'inden daha fazla olacaktır.
Sanırım subvektörünüz aslında 100'dür (74 + 2 + 17 + 1 + 2 + 1 + 3). – josliber