Discard all steps that match a given pattern
.
Arguments
- pip
Pipeline
object- pattern
string
containing a regular expression (or character string forfixed = TRUE
) to be matched.- recursive
logical
ifTRUE
the step is removed together with all its downstream dependencies.- fixed
logical
IfTRUE
,pattern
is a string to be matched as is. Overrides all conflicting arguments.- ...
further arguments passed to
grep()
.
Examples
p <- pipe_new("pipe", data = 1:2)
pipe_add(p, "add1", \(x = ~data) x + 1)
pipe_add(p, "add2", \(x = ~add1) x + 2)
pipe_add(p, "mult3", \(x = ~add1) x * 3)
pipe_add(p, "mult4", \(x = ~add2) x * 4)
p
#> step depends out keepOut group state
#> <char> <list> <list> <lgcl> <char> <char>
#> 1: data [NULL] FALSE data New
#> 2: add1 data [NULL] FALSE add1 New
#> 3: add2 add1 [NULL] FALSE add2 New
#> 4: mult3 add1 [NULL] FALSE mult3 New
#> 5: mult4 add2 [NULL] FALSE mult4 New
pipe_discard_steps(p, "mult")
#> step 'mult4' was removed
#> step 'mult3' was removed
p
#> step depends out keepOut group state
#> <char> <list> <list> <lgcl> <char> <char>
#> 1: data [NULL] FALSE data New
#> 2: add1 data [NULL] FALSE add1 New
#> 3: add2 add1 [NULL] FALSE add2 New
# Re-add steps
pipe_add(p, "mult3", \(x = ~add1) x * 3)
pipe_add(p, "mult4", \(x = ~add2) x * 4)
p
#> step depends out keepOut group state
#> <char> <list> <list> <lgcl> <char> <char>
#> 1: data [NULL] FALSE data New
#> 2: add1 data [NULL] FALSE add1 New
#> 3: add2 add1 [NULL] FALSE add2 New
#> 4: mult3 add1 [NULL] FALSE mult3 New
#> 5: mult4 add2 [NULL] FALSE mult4 New
# Discarding 'add1' does not work ...
try(pipe_discard_steps(p, "add1"))
#> Error : cannot remove step 'add1' because the following steps depend on it: 'add2', 'mult3'
# ... unless we enforce to remove its downstream dependencies as well
pipe_discard_steps(p, "add1", recursive = TRUE)
#> Removing step 'add1' and its downstream dependencies: 'add2', 'mult3', 'mult4'
#> step 'add1' was removed
p
#> step depends out keepOut group state
#> <char> <list> <list> <lgcl> <char> <char>
#> 1: data [NULL] FALSE data New
# Trying to discard non-existent steps is just ignored
pipe_discard_steps(p, "non-existent")