From 33d700916da2cfc4a4b4724e307c5070de37b18a Mon Sep 17 00:00:00 2001 From: Benjamin Schwendinger Date: Wed, 27 Nov 2024 11:01:49 +0100 Subject: [PATCH] ensure same types for test --- R/bmerge.R | 6 +++--- inst/tests/tests.Rraw | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/R/bmerge.R b/R/bmerge.R index b6e0f4afb..d24d8cb94 100644 --- a/R/bmerge.R +++ b/R/bmerge.R @@ -113,7 +113,7 @@ bmerge = function(i, x, icols, xcols, roll, rollends, nomatch, mult, ops, verbos # we've always coerced to int and returned int, for convenience. if (length(ic_idx)>1L) { xc_idx = xcols[ic_idx] - for (b in which(vapply_1c(x[0L, ..xc_idx], getClass) == "double")) { + for (b in which(vapply_1c(x[0L, xc_idx, with=FALSE], getClass) == "double")) { xb = xcols[b] if (isReallyReal(x[[xb]])) { coerce_x = FALSE @@ -128,7 +128,7 @@ bmerge = function(i, x, icols, xcols, roll, rollends, nomatch, mult, ops, verbos set(callersi, j=ic, value=val) # change the shallow copy of i up in [.data.table to reflect in the result, too. if (length(ic_idx)>1L) { xc_idx = xcols[ic_idx] - for (b in which(vapply_1c(x[0L, ..xc_idx], getClass) == "double")) { + for (b in which(vapply_1c(x[0L, xc_idx, with=FALSE], getClass) == "double")) { xb = xcols[b] if (verbose) catf("Coercing double column %s (which contains no fractions) to type integer to match type of %s.\n", paste0("x.", names(x)[xb]), xname) set(x, j=xb, value=cast_with_atts(x[[xb]], as.integer)) @@ -146,7 +146,7 @@ bmerge = function(i, x, icols, xcols, roll, rollends, nomatch, mult, ops, verbos set(i, j=ic, value=val) if (length(ic_idx)>1L) { xc_idx = xcols[ic_idx] - for (b in which(vapply_1c(x[0L, ..xc_idx], getClass) == "integer")) { + for (b in which(vapply_1c(x[0L, xc_idx, with=FALSE], getClass) == "integer")) { xb = xcols[b] if (verbose) catf("Coercing integer column %s to type double for join to match type of %s.\n", paste0("x.", names(x)[xb]), xname) set(x, j=xb, value=cast_with_atts(x[[xb]], as.double)) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index f77c3fbcb..2ff7d7504 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -12226,10 +12226,11 @@ DT1 = data.table(RANDOM_STRING = rand_strings(n), DATE = sample(seq(as.Date('2016-01-01'), as.Date('2016-12-31'), by="day"), n, replace=TRUE)) DT2 = data.table(RANDOM_STRING = rand_strings(n), START_DATE = sample(seq(as.Date('2015-01-01'), as.Date('2017-12-31'), by="day"), n, replace=TRUE)) +as.intDate = function(x) .Date(as.integer(as.Date(x))) DT2[, EXPIRY_DATE := START_DATE + floor(runif(1000, 200,300))] -DT1[, DT1_ID := .I][, DATE := as.Date(DATE)] +DT1[, DT1_ID := .I][, DATE := as.intDate(DATE)] cols = c("START_DATE", "EXPIRY_DATE") -DT2[, DT2_ID := .I][, (cols) := lapply(.SD, as.Date), .SDcols=cols] +DT2[, DT2_ID := .I][, (cols) := lapply(.SD, as.intDate), .SDcols=cols] ans1 = DT2[DT1, on=.(RANDOM_STRING, START_DATE <= DATE, EXPIRY_DATE >= DATE), .N, by=.EACHI ]$N > 0L tmp = DT1[DT2, on=.(RANDOM_STRING, DATE >= START_DATE, DATE <= EXPIRY_DATE), which=TRUE, nomatch=0L] ans2 = DT1[, DT1_ID %in% tmp]