Hi I want to do a for loop and remove rows in a dataset until "contaminants" are gone.
Here is an example. This is a subset of a much larger data.frame. By contaminant I mean, chunks or individual FALSEs within TRUEs, and vice-versa. The loop should first remove one contaminant, then two, three, etc. until no TRUE is within FALSE and vice versa.
1.0 de cd FALSE
1.0 cd de FALSE
1.0 cd de FALSE
1.1 e cd TRUE
1.1 e cd TRUE
1.1 e cd TRUE
1.1 cd e TRUE
1.2 de cd FALSE
1.2 de cd FALSE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 bc cd FALSE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
I want something like this:
1.0 de cd FALSE
1.0 cd de FALSE
1.0 cd de FALSE
1.1 e cd TRUE
1.1 e cd TRUE
1.1 e cd TRUE
1.1 cd e TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
1.3 e cd TRUE
The loop function should first remove row 1.3 bc cd FALSE
, then both 1.2 de cd FALSE
rows because all neighbors are true.
In addition, this loop will be placed within a function. I would double appreciate if it run fast.
Whole dataset:
structure(list(n = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2,
0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2,
0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2,
0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.3, 0.3,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.5, 0.5, 0.6,
0.6, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8,
0.8, 0.8, 0.8, 0.8, 0.8, 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.2, 1.2,
1.2, 1.2, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.5, 1.5, 1.5, 1.5, 2.1,
2.1, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3,
2.3, 2.3, 2.3, 2.3, 2.4, 2.4, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5,
2.5, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 3.7, 3.9, 3.9, 4.5,
4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.9, 4.9, 4.9, 4.9, 5,
5, 5, 5, 8.5, 10.9, 10.9, 12.2, 12.4, 12.4, 13, 13.2, 13.2, 13.2,
13.2, 13.2, 13.2, 13.2, 13.2, 13.4, 13.4, 13.4, 13.4, 13.5, 13.5,
13.5, 13.5), V2 = c("de", "de", "de", "de", "de", "e", "e", "e",
"de", "de", "de", "de", "de", "de", "de", "e", "e", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "de", "bc",
"de", "de", "de", "de", "cd", "e", "de", "de", "de", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "e", "e",
"e", "e", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "cde", "cde", "cde", "cde", "cde", "de", "de",
"de", "de", "de", "cd", "cd", "e", "e", "e", "e", "e", "e", "e",
"e", "de", "de", "de", "e", "e", "e", "e", "e", "e", "e", "de",
"de", "de", "de", "de", "de", "e", "e", "e", "e", "de", "de",
"de", "de", "de", "de", "de", "cde", "e", "e", "cde", "cde",
"cde", "cde", "de", "de", "de", "de", "de", "de", "cde", "de",
"de", "cd", "cd", "cd", "cd", "de", "cd", "cd", "cd", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "cd", "cd", "e", "e", "e", "e", "cd", "cd", "e", "cd",
"de", "de", "de", "de", "e", "e", "bc", "bc", "e", "cd", "bc",
"bc", "bc", "bc", "cde", "cde", "de", "de", "de", "de", "de",
"de", "bc", "bc", "bc", "bc", "bc", "de", "bc", "bc", "bc", "bc",
"bc", "bc", "de", "de", "de", "de", "de", "de", "bc", "bc", "e",
"e", "e", "e", "bc", "bc", "bc", "bc", "b", "b", "b", "cde",
"de", "de", "de", "de", "b", "b", "b", "b", "de", "de", "de",
"de", "e", "e", "b", "b", "b", "bc", "bc", "cd", "cd", "cd",
"cde", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "e", "e", "e", "e"), V3 = c("de", "de", "de",
"de", "de", "e", "e", "e", "de", "de", "de", "de", "de", "de",
"de", "e", "e", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "de", "bc", "de", "de", "de", "de", "cd", "e",
"de", "de", "de", "de", "de", "de", "e", "e", "e", "e", "e",
"e", "e", "e", "de", "de", "de", "de", "e", "e", "e", "e", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "de", "de", "de",
"de", "de", "de", "de", "de", "cde", "de", "de", "de", "de",
"de", "de", "de", "de", "cde", "de", "cde", "de", "de", "de",
"de", "de", "de", "de", "de", "de", "de", "de", "cd", "cd", "de",
"de", "de", "de", "de", "de", "de", "de", "e", "e", "e", "de",
"de", "de", "de", "de", "de", "de", "e", "e", "e", "e", "e",
"e", "de", "de", "de", "de", "e", "e", "e", "e", "cde", "cde",
"cde", "de", "cde", "cde", "e", "e", "cd", "cd", "cd", "cd",
"cd", "cd", "cd", "cd", "cd", "cd", "cd", "de", "de", "de", "de",
"cd", "de", "de", "de", "cd", "cd", "cd", "cd", "cd", "cd", "cd",
"cd", "cd", "cd", "cd", "cd", "cd", "cd", "de", "de", "cd", "cd",
"cd", "cd", "e", "e", "cd", "e", "cd", "cd", "cd", "cd", "cd",
"cd", "cd", "cd", "cd", "e", "cd", "cd", "cd", "cd", "bc", "bc",
"bc", "bc", "bc", "bc", "bc", "bc", "de", "de", "de", "de", "de",
"bc", "de", "de", "de", "de", "b", "b", "bc", "bc", "bc", "bc",
"bc", "bc", "de", "de", "bc", "bc", "bc", "bc", "e", "e", "e",
"e", "cd", "cd", "cd", "b", "b", "b", "b", "b", "de", "de", "de",
"de", "b", "b", "b", "b", "b", "b", "e", "e", "a", "a", "a",
"a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
"a", "a", "a", "a", "a", "a", "a"), inter = c(FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)), row.names = c(1L,
5L, 12L, 27L, 34L, 47L, 58L, 65L, 69L, 70L, 73L, 79L, 81L, 83L,
84L, 97L, 104L, 112L, 124L, 127L, 133L, 135L, 137L, 138L, 143L,
149L, 151L, 153L, 154L, 173L, 191L, 193L, 195L, 196L, 234L, 247L,
250L, 252L, 253L, 263L, 264L, 271L, 2L, 4L, 15L, 22L, 24L, 26L,
37L, 44L, 48L, 55L, 87L, 94L, 115L, 122L, 213L, 220L, 3L, 6L,
7L, 10L, 16L, 18L, 20L, 21L, 25L, 28L, 29L, 32L, 38L, 40L, 42L,
43L, 68L, 71L, 75L, 106L, 107L, 110L, 116L, 118L, 120L, 121L,
125L, 129L, 141L, 145L, 158L, 164L, 166L, 168L, 169L, 187L, 214L,
216L, 218L, 219L, 236L, 257L, 46L, 49L, 50L, 53L, 59L, 61L, 63L,
64L, 67L, 78L, 85L, 88L, 89L, 92L, 98L, 100L, 102L, 103L, 132L,
139L, 148L, 155L, 190L, 197L, 241L, 243L, 245L, 246L, 254L, 265L,
272L, 274L, 8L, 30L, 108L, 160L, 51L, 90L, 163L, 170L, 162L,
165L, 77L, 80L, 131L, 134L, 147L, 150L, 167L, 189L, 192L, 233L,
235L, 237L, 238L, 249L, 256L, 258L, 259L, 14L, 17L, 36L, 39L,
82L, 114L, 117L, 136L, 152L, 194L, 212L, 215L, 251L, 262L, 267L,
268L, 57L, 60L, 96L, 99L, 232L, 239L, 242L, 260L, 19L, 41L, 119L,
217L, 62L, 101L, 181L, 206L, 244L, 269L, 176L, 179L, 201L, 204L,
157L, 159L, 72L, 74L, 126L, 128L, 142L, 144L, 172L, 178L, 180L,
182L, 183L, 186L, 203L, 205L, 207L, 208L, 175L, 200L, 9L, 11L,
31L, 33L, 109L, 111L, 174L, 199L, 52L, 54L, 91L, 93L, 177L, 184L,
202L, 209L, 227L, 222L, 225L, 161L, 76L, 130L, 146L, 188L, 224L,
226L, 228L, 229L, 13L, 35L, 113L, 211L, 56L, 95L, 223L, 230L,
231L, 185L, 210L, 270L, 240L, 261L, 171L, 86L, 140L, 156L, 198L,
255L, 266L, 273L, 275L, 23L, 45L, 123L, 221L, 66L, 105L, 248L,
276L), class = "data.frame")
Aucun commentaire:
Enregistrer un commentaire