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
Both
operator_descriptions[condition]andoperator_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 ofoperator_conditionsseems 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