View source: R/extraction_operator_linter.R
extraction_operator_linter | R Documentation |
Check that the [[
operator is used when extracting a single element from an object,
not [
(subsetting) nor $
(interactive use).
extraction_operator_linter()
There are three subsetting operators in R ([[
, [
, and $
) and they interact differently
with different data structures (atomic vector, list, data frame, etc.).
Here are a few reasons to prefer the [[
operator over [
or $
when you want to extract
an element from a data frame or a list:
Subsetting a list with [
always returns a smaller list, while [[
returns
the list element.
Subsetting a named atomic vector with [
returns a named vector, while [[
returns
the vector element.
Subsetting a data frame (but not tibble) with [
is type unstable; it can return
a vector or a data frame. [[
, on the other hand, always returns a vector.
For a data frame (but not tibble), $
does partial matching (e.g. df$a
will subset
df$abc
), which can be a source of bugs. [[
doesn't do partial matching.
For data frames (and tibbles), irrespective of the size, the [[
operator is slower than $
.
For lists, however, the reverse is true.
best_practices, style
Subsetting chapter from Advanced R (Wickham, 2019).
linters for a complete list of linters available in lintr.
# will produce lints
lint(
text = 'iris["Species"]',
linters = extraction_operator_linter()
)
lint(
text = "iris$Species",
linters = extraction_operator_linter()
)
# okay
lint(
text = 'iris[["Species"]]',
linters = extraction_operator_linter()
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.