rif-statementbreakcol

Delete specific columns


I have

F <- structure(c(0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0), .Dim = c(3L, 
5L))

How can I remove from F the columns that have less than 2 consecutive zero? Thx!


Solution

  • We may use rle to determine the consecutive values i.e. 0 and create a logical condition with lengths by looping over the column (apply, MARGIN = 2)

    F[,!apply(F, 2, function(x) with(rle(!x), 
          any(lengths >= 2 & values))), drop = FALSE]
    

    -output

          [,1] [,2]
    [1,]    0    0
    [2,]    1    1
    [3,]    1    1
    

    If it is the opposite, just remove the !

    F[,apply(F, 2, function(x) with(rle(!x), 
          any(lengths >= 2 & values))), drop = FALSE]
          [,1] [,2] [,3]
    [1,]    1    1    1
    [2,]    0    0    0
    [3,]    0    0    0