nested_pipe_linter {lintr} | R Documentation |
Block usage of pipes nested inside other calls
Description
Nesting pipes harms readability; extract sub-steps to separate variables, append further pipeline steps, or otherwise refactor such usage away.
Usage
nested_pipe_linter(
allow_inline = TRUE,
allow_outer_calls = c("try", "tryCatch", "withCallingHandlers")
)
Arguments
allow_inline |
Logical, default |
allow_outer_calls |
Character vector dictating which "outer"
calls to exempt from the requirement to unnest (see examples). Defaults
to |
Tags
configurable, consistency, readability
See Also
linters for a complete list of linters available in lintr.
Examples
# will produce lints
code <- "df1 %>%\n inner_join(df2 %>%\n select(a, b)\n )"
writeLines(code)
lint(
text = code,
linters = nested_pipe_linter()
)
lint(
text = "df1 %>% inner_join(df2 %>% select(a, b))",
linters = nested_pipe_linter(allow_inline = FALSE)
)
lint(
text = "tryCatch(x %>% filter(grp == 'a'), error = identity)",
linters = nested_pipe_linter(allow_outer_calls = character())
)
# okay
lint(
text = "df1 %>% inner_join(df2 %>% select(a, b))",
linters = nested_pipe_linter()
)
code <- "df1 %>%\n inner_join(df2 %>%\n select(a, b)\n )"
writeLines(code)
lint(
text = code,
linters = nested_pipe_linter(allow_outer_calls = "inner_join")
)
lint(
text = "tryCatch(x %>% filter(grp == 'a'), error = identity)",
linters = nested_pipe_linter()
)
[Package lintr version 3.2.0 Index]