Skip to content

Why does column take precedence over an object with the same name in data table in cases of join with a subsetted data table #4946

@wsrfad

Description

@wsrfad

Both operator_descriptions[condition] and operator_conditions[operator_descriptions, on="operator"] work without issue, yet (as you demonstrate) the merge fails.

operator_descriptions <- data.table(operator = "/", description = "/") operator_conditions <- data.table(operator = "/", condition = "Quotient non zero") condition <- c(TRUE) operator_conditions[operator_descriptions[condition], on = c("operator")]

Output Error: When i is a data.table (or character vector), the columns to join by must be specified either using 'on=' argument (see ?data.table) or by keying x (i.e. sorted, and, marked as sorted, see ?setkey). Keyed joins might have further speed benefits on very large data due to x being sorted in RAM.

Despite the fact that condition is in the scope of operator_descriptions, condition column of operator_conditions seems to take precedence over the condition object defined in previous statement.

This behavior requires one to be cautious about names etc. While in normal cases, this is fine as we intend to use column names mostly. But in cases like these, I am not sure if it is the intention.

# Output of sessionInfo()
R version 3.4.4 (2018-03-15) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 16.04.7 LTS

Metadata

Metadata

Assignees

No one assigned

    Labels

    programmingparameterizing queries: get, mget, eval, env

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions