View source: R/if_not_else_linter.R
if_not_else_linter | R Documentation |
if (!A) x else y
is the same as if (A) y else x
, but the latter is
easier to reason about in the else
case. The former requires
double negation that can be avoided by switching the statement order.
if_not_else_linter(exceptions = c("is.null", "is.na", "missing"))
exceptions |
Character vector of calls to exclude from linting.
By default, |
This only applies in the simple if/else
case. Statements like
if (!A) x else if (B) y else z
don't always have a simpler or
more readable form.
It also applies to ifelse()
and the package equivalents
dplyr::if_else()
and data.table::fifelse()
.
configurable, consistency, readability
linters for a complete list of linters available in lintr.
# will produce lints
lint(
text = "if (!A) x else y",
linters = if_not_else_linter()
)
lint(
text = "if (!A) x else if (!B) y else z",
linters = if_not_else_linter()
)
lint(
text = "ifelse(!is_treatment, x, y)",
linters = if_not_else_linter()
)
lint(
text = "if (!is.null(x)) x else 2",
linters = if_not_else_linter(exceptions = character())
)
# okay
lint(
text = "if (A) x else y",
linters = if_not_else_linter()
)
lint(
text = "if (!A) x else if (B) z else y",
linters = if_not_else_linter()
)
lint(
text = "ifelse(is_treatment, y, x)",
linters = if_not_else_linter()
)
lint(
text = "if (!is.null(x)) x else 2",
linters = if_not_else_linter()
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.