From 7b05e4004009820e417507a87b4be4b5d5668c75 Mon Sep 17 00:00:00 2001 From: Benjamin Schwendinger Date: Sat, 11 Jul 2026 21:46:23 +0200 Subject: [PATCH 1/2] replace old attributes name --- inst/tests/other.Rraw | 18 ++++----- inst/tests/programming.Rraw | 2 +- inst/tests/tests.Rraw | 78 ++++++++++++++++++------------------- 3 files changed, 49 insertions(+), 49 deletions(-) diff --git a/inst/tests/other.Rraw b/inst/tests/other.Rraw index a7c8f4c943..a168b5fe76 100644 --- a/inst/tests/other.Rraw +++ b/inst/tests/other.Rraw @@ -572,7 +572,7 @@ xt = structure( 94807600, 69620600, 76645300, 108.999954, 109.231255, 108.360008), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(c(1167782400, 1167868800, 1167955200), tzone = "UTC", tclass = "Date"), - .Dim = c(3L, 6L), .Dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) + dim = c(3L, 6L), dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) ) local({ old = options(datatable.verbose=TRUE); on.exit(options(old)) @@ -585,14 +585,14 @@ local({ c(141.330002, 141.399994, 140.380005, 140.539993, 76645300, 108.360008), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(1167955200, tzone = "UTC", tclass = "Date"), - .Dim = c(1L, 6L), .Dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) + dim = c(1L, 6L), dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) ) xt_last2 = structure( c(141.229996, 141.330002, 142.050003, 141.399994, 140.610001, 140.380005, 141.669998, 140.539993, 69620600, 76645300, 109.231255, 108.360008), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(c(1167868800, 1167955200), tzone = "UTC", tclass = "Date"), - .Dim = c(2L, 6L), .Dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) + dim = c(2L, 6L), dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) ) test(19.25, last(xt), xt_last, output="using xts::last: is.xts(x)") test(19.26, last(xt, n=2L), xt_last2, output="using xts::last: is.xts(x)") @@ -604,13 +604,13 @@ local({ c(142.25, 142.860001, 140.570007, 141.369995, 94807600, 108.999954), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(1167782400, tzone = "UTC", tclass = "Date"), - .Dim = c(1L, 6L), .Dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) + dim = c(1L, 6L), dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) ) xt_first2 = structure( c(142.25, 141.229996, 142.860001, 142.050003, 140.570007, 140.610001, 141.369995, 141.669998, 94807600, 69620600, 108.999954, 109.231255), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(c(1167782400, 1167868800), tzone = "UTC", tclass = "Date"), - .Dim = c(2L, 6L), .Dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) + dim = c(2L, 6L), dimnames = list(NULL, c("SPY.Open", "SPY.High", "SPY.Low", "SPY.Close", "SPY.Volume", "SPY.Adjusted")) ) test(19.35, first(xt), xt_first, output="using xts::first: is.xts(x)") test(19.36, first(xt, n=2L), xt_first2, output="using xts::first: is.xts(x)") @@ -637,11 +637,11 @@ local({ test(19.71, first(df), structure(list(a=1L, b=3L), row.names=1L, class="data.frame"), output="using 'x[1L,]': !is.xts(x) & !nargs>1 & is.data.frame(x)") test(19.72, first(dt), data.table(a=1L, b=3L), output="using 'x[1L,]': !is.xts(x) & !nargs>1 & is.data.frame(x)") # matrix/array utils::tail behavior is likely to change in future R, Michael is more in the topic - test(19.81, last(mx), structure(c(3L, 6L, 9L), .Dim = c(1L, 3L), .Dimnames = list("[3,]", NULL)), output="using utils::tail: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") - expected = if (base::getRversion() < "3.7.0") 27L else structure(c(3L, 6L, 9L, 12L, 15L, 18L, 21L, 24L, 27L), .Dim = c(1L, 3L, 3L), .Dimnames = list("[3,]", NULL, NULL)) #4127 + test(19.81, last(mx), structure(c(3L, 6L, 9L), dim = c(1L, 3L), dimnames = list("[3,]", NULL)), output="using utils::tail: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") + expected = if (base::getRversion() < "3.7.0") 27L else structure(c(3L, 6L, 9L, 12L, 15L, 18L, 21L, 24L, 27L), dim = c(1L, 3L, 3L), dimnames = list("[3,]", NULL, NULL)) #4127 test(19.82, last(ar), expected, output="using utils::tail: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") - test(19.91, first(mx), structure(c(1L, 4L, 7L), .Dim = c(1L, 3L)), output="using utils::head: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") - expected = if (base::getRversion() < "3.7.0") 1L else structure(c(1L, 4L, 7L, 10L, 13L, 16L, 19L, 22L, 25L), .Dim = c(1L, 3L, 3L)) #4127 + test(19.91, first(mx), structure(c(1L, 4L, 7L), dim = c(1L, 3L)), output="using utils::head: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") + expected = if (base::getRversion() < "3.7.0") 1L else structure(c(1L, 4L, 7L, 10L, 13L, 16L, 19L, 22L, 25L), dim = c(1L, 3L, 3L)) #4127 test(19.92, first(ar), expected, output="using utils::head: !is.xts(x) & !nargs>1 & !is.null(dim(x)) & !is.data.frame(x)") }) diff --git a/inst/tests/programming.Rraw b/inst/tests/programming.Rraw index 832f2f646e..4c90e459d7 100644 --- a/inst/tests/programming.Rraw +++ b/inst/tests/programming.Rraw @@ -583,7 +583,7 @@ cor_xy3 = function(xdt, ydt, x, y) { ## cor matrix of existing columns and dynam cor_mx = cor_xy3(xdt, ydt, c("x1", "x2"), ycols) exp = structure(c( 1, 0.242249239102964, -0.0286729531730845, -0.0936087330415663, 0.245575245812681, 0.323778522797129, 0.242249239102964, 1, 0.199165327684089, -0.160954354243643, 0.0034174556771777, 0.185518712777259, -0.0286729531730845, 0.199165327684089, 1, -0.164047186655086, -0.0689536633998918, -0.0326400434160486, -0.0936087330415663, -0.160954354243643, -0.164047186655086, 1, -0.0810998892055976, -0.106457956110047, 0.245575245812681, 0.0034174556771777, -0.0689536633998918, -0.0810998892055976, 1, 0.324977066952494, 0.323778522797129, 0.185518712777259, -0.0326400434160486, -0.106457956110047, 0.324977066952494, 1 - ), .Dim = c(6L, 6L), .Dimnames = list( + ), dim = c(6L, 6L), dimnames = list( c("x1", "x2", "y1", "y5", "y10", "y20"), c("x1", "x2", "y1", "y5", "y10", "y20") )) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 2dec33a23d..5ea8589efa 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -1729,7 +1729,7 @@ setkey(DT, COURSE) test(550, DT[,sum(ID),by=key(DT)]$V1, INT(6,1,29,2,17)) # Another test of DT[i] syntax from datatable-unaware packages, #1794 from ilprincipe. -DF = structure(list(sample = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("panel.1yr", "panel.2yr", "panel.3yr", "panel.inc", "pre.inc", "pre.prev", "post.inc", "post.prev"), class = "factor"), base = c(2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002), ref = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("2004", "2002-2004", "2001", "2000", "2009", "2008"), class = "factor"), var = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("distance", "time"), class = "factor"), treated = c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1), distance = c(10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05), all = c(602L, 6357L, 8528L, 9272L, 435L, 2438L, 3456L, 6360L, 245L, 2693L, 3699L, 4084L, 187L, 983L, 1400L, 2660L), di.recip = c(5L, 39L, 57L, 62L, 4L, 16L, 22L, 45L, 2L, 25L, 36L, 37L, 1L, 11L, 16L, 35L), irr = c(0.00830564784053156, 0.00613496932515337, 0.00668386491557223, 0.00668679896462468, 0.00919540229885057, 0.00656275635767022, 0.00636574074074074, 0.00707547169811321, 0.00816326530612245, 0.00928332714444857, 0.0097323600973236, 0.00905974534769833, 0.0053475935828877, 0.0111902339776195, 0.0114285714285714, 0.0131578947368421)), .Names = c("sample", "base", "ref", "var", "treated", "distance", "all", "di.recip", "irr"), row.names = c(NA, 16L), class = "data.frame") +DF = structure(list(sample = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), levels = c("panel.1yr", "panel.2yr", "panel.3yr", "panel.inc", "pre.inc", "pre.prev", "post.inc", "post.prev"), class = "factor"), base = c(2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002), ref = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("2004", "2002-2004", "2001", "2000", "2009", "2008"), class = "factor"), var = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("distance", "time"), class = "factor"), treated = c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1), distance = c(10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05, 10000, 30000, 50000, 1e+05), all = c(602L, 6357L, 8528L, 9272L, 435L, 2438L, 3456L, 6360L, 245L, 2693L, 3699L, 4084L, 187L, 983L, 1400L, 2660L), di.recip = c(5L, 39L, 57L, 62L, 4L, 16L, 22L, 45L, 2L, 25L, 36L, 37L, 1L, 11L, 16L, 35L), irr = c(0.00830564784053156, 0.00613496932515337, 0.00668386491557223, 0.00668679896462468, 0.00919540229885057, 0.00656275635767022, 0.00636574074074074, 0.00707547169811321, 0.00816326530612245, 0.00928332714444857, 0.0097323600973236, 0.00905974534769833, 0.0053475935828877, 0.0111902339776195, 0.0114285714285714, 0.0131578947368421)), names = c("sample", "base", "ref", "var", "treated", "distance", "all", "di.recip", "irr"), row.names = c(NA, 16L), class = "data.frame") DT = as.data.table(DF) test(551, nrow(stats::reshape(DT, v.names = c("all", "di.recip", "irr"), timevar = "treated", idvar = c("sample", "var", "distance"), @@ -4147,7 +4147,7 @@ test(1155.3, dt1[dt2, nomatch=0L], data.table(x=dt1$x, y=dt1$y, z=dt2$z[1:3], ke dt <- structure(list(x = c(NaN, NaN, NaN, NaN, NaN, NA, NA, -3, -3, -3, -2, -2, -1, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3), y = c(16L, 25L, 23L, 17L, 21L, 11L, 13L, 15L, 1L, 6L, 4L, 18L, 7L, 3L, 12L, -24L, 2L, 10L, 20L, 14L, 9L, 19L, 8L, 22L, 5L)), .Names = c("x", +24L, 2L, 10L, 20L, 14L, 9L, 19L, 8L, 22L, 5L)), names = c("x", "y"), row.names = c(NA, -25L), class = c("data.table", "data.frame" )) setkey(dt, x) @@ -4277,15 +4277,15 @@ B <- data.table(x=factor(), key='x') test(1168.1, rbindlist(list(B,A)), data.table(x=factor(1))) # fix for bug #72, it's related to rbind and factors as well - more or less similar to 1168.1 (#55). -tmp1 <- as.data.table(structure(list(Year = 2013L, Maturity = structure(1L, .Label = c("<1", +tmp1 <- as.data.table(structure(list(Year = 2013L, Maturity = structure(1L, levels = c("<1", "1.0 - 1.5", "1.5 - 2.0", "2.0 - 2.5", "2.5 - 3.0", "3.0 - 4.0", - "4.0 - 5.0", ">5.0"), class = "factor"), Quality = structure(2L, .Label = c(">BBB", + "4.0 - 5.0", ">5.0"), class = "factor"), Quality = structure(2L, levels = c(">BBB", "BBB", "BB", "B", "CCC", "= start, flight==flight)]) > # fix for #2202, dcast needs to rank NA with na.last=FALSE in frankv within dcast x = data.table( - f1 = structure(c(1L, 1L, 1L, 1L, NA, NA), .Label = "123456", class = "factor"), - f2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "U", class = "factor"), + f1 = structure(c(1L, 1L, 1L, 1L, NA, NA), levels = "123456", class = "factor"), + f2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L), levels = "U", class = "factor"), v1 = c(0,300, 600, 500, 0, 800), v2 = c(0,15, 50, 30, 0, 50)) y = x[, lapply(.SD, sum), by=.(f1,f2)] @@ -15051,12 +15051,12 @@ test(2051.6, DT[order(sin(a/pi))], DT) # rbindlist ordered factor with an NA level, #3601 dt1 = structure(list(V1 = c("2016", "2016", "2016", "2016", "2016"), - V46 = structure(c(3L, 1L, 1L, NA, 3L), .Label = c("Low", + V46 = structure(c(3L, 1L, 1L, NA, 3L), levels = c("Low", "Typical", "High", NA), class = c("ordered", "factor"))), class = c("data.table", "data.frame"), row.names = c(NA, -5L)) dt2 = structure(list(V1 = c("2018", "2018", "2018", "2018", "2018")), row.names = c(NA, -5L), class = c("data.table", "data.frame")) test(2052, rbindlist(list(dt1, dt2), fill=TRUE), data.table(V1=c(dt1$V1, dt2$V1), - V46=structure(c(3L,1L,1L,NA,3L,NA,NA,NA,NA,NA), .Label=c("Low","Typical","High",NA), class = c("ordered", "factor")))) + V46=structure(c(3L,1L,1L,NA,3L,NA,NA,NA,NA,NA), levels=c("Low","Typical","High",NA), class = c("ordered", "factor")))) # rbind.data.frame didn't respect integer storage mode of IDate, #2008 DF = data.frame(date = as.IDate(0L)) @@ -17178,7 +17178,7 @@ test(2184.4, dt2[1, suma], 2) IDT = as.data.table(iris) vr = "Species" IDT[, virginca := get(vr) == "virginica"] -ans = data.table(round = c(3, 3, 3, 2, 2, 4, 2, 4), k = c(6, 7, 8, 5, 7, 7, 6, 8), kar = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("setosa", "versicolor", "virginica"), class = "factor"), N = c(24L, 14L, 4L, 1L, 1L, 1L, 3L, 2L)) +ans = data.table(round = c(3, 3, 3, 2, 2, 4, 2, 4), k = c(6, 7, 8, 5, 7, 7, 6, 8), kar = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), levels = c("setosa", "versicolor", "virginica"), class = "factor"), N = c(24L, 14L, 4L, 1L, 1L, 1L, 3L, 2L)) test(2184.5, IDT[(virginca), .N, by = .(round(Sepal.Width), k = round(Sepal.Length), kar = get(vr))] , ans) # dcast() segfault or 'STRING_ELT() can only be applied to character not logical' fixed in v1.13.0, #2394 @@ -18234,11 +18234,11 @@ test(2254.9, DT[, .(b = array(b, dim=rep(c(1L, .N), c(10L, 1L)))), by=a], DT[ord # regression test on issue reported with printing nested table, #1646 DF <- structure( list( - DF1=structure(list(V1=list(1:2, 3:4), V2=5:6), .Names=c("V1", "V2"), class="data.frame", row.names=c(NA, 2L)), - DF2=structure(list(V3=7:8, V4=9:10), .Names=c("V3", "V4"), class="data.frame", row.names=c(NA, 2L)), + DF1=structure(list(V1=list(1:2, 3:4), V2=5:6), names=c("V1", "V2"), class="data.frame", row.names=c(NA, 2L)), + DF2=structure(list(V3=7:8, V4=9:10), names=c("V3", "V4"), class="data.frame", row.names=c(NA, 2L)), V5=11:12 ), - .Names=c("DF1", "DF2", "V5"), class="data.frame", row.names=c(NA, 2L) + names=c("DF1", "DF2", "V5"), class="data.frame", row.names=c(NA, 2L) ) test(2255, as.data.table(DF), output="DF1.V1.*DF1.V2.*DF2.V3.*DF2.V4.*V5") From fcc9f7df377ecfead426eb393f8c60b1d0d80042 Mon Sep 17 00:00:00 2001 From: Benjamin Schwendinger Date: Sat, 11 Jul 2026 22:34:25 +0200 Subject: [PATCH 2/2] also replace in compressed files --- inst/tests/melt_1754.R.gz | Bin 3898 -> 3887 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/tests/melt_1754.R.gz b/inst/tests/melt_1754.R.gz index f9b56ded803121cf8c4840e8a12a33bbe75fbdeb..fcf38cd41f51451aca0ab69b77e2e723367c5c62 100644 GIT binary patch delta 3794 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 IL~_vp0O$QrL;wH) delta 3788 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