From 16ef573bfcea44fc51f1561c25736cc794ea669d Mon Sep 17 00:00:00 2001 From: Toby Dylan Hocking Date: Sat, 3 Oct 2020 08:30:44 -0700 Subject: [PATCH 1/4] test failing for na.rm=TRUE and list column value --- inst/tests/tests.Rraw | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index e4dbcb480e..6fdc180fdd 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -3015,6 +3015,10 @@ test(1034, as.data.table(x<-as.character(sample(letters, 5))), data.table(V1=x)) test(1035.012, melt(DT, id.vars=1:3, measure.vars=as.raw(0)), error="Unknown 'measure.vars' type raw") + # PR#TODO, na.rm=TRUE with list column value. + test(1035.013, melt(data.table(a1=1, b1=list(1:2), b2=list(c('foo','bar'))), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=list(1:2))) + test(1035.014, melt(data.table(a1=1, b1=1, b2=2), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=1))#this worked even before the PR. + ans1 = cbind(DT[, c(1,2,8), with=FALSE], variable=factor("l_1")) ans1[, value := DT$l_1] test(1035.02, melt(DT, id.vars=c("i_1", "i_2", "l_2"), measure.vars=c("l_1")), ans1) From 92bc0c999e6aa10aa98d2e592bf21adb499dcd35 Mon Sep 17 00:00:00 2001 From: Toby Dylan Hocking Date: Sat, 3 Oct 2020 15:09:56 -0700 Subject: [PATCH 2/4] do not ignore narm --- src/fmelt.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/fmelt.c b/src/fmelt.c index 22a4ac1fc5..5686785aad 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -397,10 +397,6 @@ SEXP getvaluecols(SEXP DT, SEXP dtnames, Rboolean valfactor, Rboolean verbose, s SEXP thisvaluecols = VECTOR_ELT(data->valuecols, i); if (!data->isidentical[i]) warning(_("'measure.vars' [%s] are not all of the same type. By order of hierarchy, the molten data value column will be of type '%s'. All measure variables not of type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on coercion.\n"), concat(dtnames, thisvaluecols), type2char(data->maxtype[i]), type2char(data->maxtype[i])); - if (data->maxtype[i] == VECSXP && data->narm) { - if (verbose) Rprintf(_("The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n"), i+1); - data->narm = FALSE; - } } if (data->narm) { SEXP seqcols = PROTECT(seq_int(data->lvalues, 1)); From 821c981f5c3431e8ea2d1a132666c5f6e40e1a06 Mon Sep 17 00:00:00 2001 From: Toby Dylan Hocking Date: Sat, 3 Oct 2020 15:10:20 -0700 Subject: [PATCH 3/4] use na.omit in test with na.rm=TRUE --- inst/tests/tests.Rraw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 6fdc180fdd..cbbc11c309 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -3041,7 +3041,7 @@ test(1034, as.data.table(x<-as.character(sample(letters, 5))), data.table(V1=x)) test(1035.051, ans1, melt(DT, id.vars="id", measure.vars=list(c(5, 6), c(7, 8)))) test(1035.052, melt(DT, id.vars="id", measure.vars=list(as.raw(0))), error="Unknown 'measure.vars' type raw") - test(1035.06, ans1, melt(DT, id.vars="id", measure.vars=list(5:6, 7:8), na.rm=TRUE)) # should've no effect + test(1035.06, na.omit(ans1), melt(DT, id.vars="id", measure.vars=list(5:6, 7:8), na.rm=TRUE)) test(1035.07, ans1, melt(DT, id.vars="id", measure.vars=patterns("d_", "l_"))) # melt retains ordered factors! test(1035.08, melt(DT, id.vars="id", measure.vars=c("f_1", "f_2"), value.factor=TRUE)$value, factor(c(as.character(DT$f_1), as.character(DT$f_2)), ordered=TRUE)) From cb510cf6b3799a02458503e687230305803441fa Mon Sep 17 00:00:00 2001 From: Matt Dowle Date: Sun, 9 May 2021 05:00:09 -0600 Subject: [PATCH 4/4] test numbers --- inst/tests/tests.Rraw | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index fa9597433e..4efddd4699 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -3019,9 +3019,9 @@ test(1034, as.data.table(x<-as.character(sample(letters, 5))), data.table(V1=x)) test(1035.014, melt(data.table(a1=1, b1=1, b2=2), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1,c("1","2")), a=1, b=1)) test(1035.015, melt(data.table(a=1+2i, b=1), id.vars="a"), error="Unknown column type 'complex' for column 'a' in 'data'") - # PR#TODO, na.rm=TRUE with list column value. - test(1035.013, melt(data.table(a1=1, b1=list(1:2), b2=list(c('foo','bar'))), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=list(1:2))) - test(1035.014, melt(data.table(a1=1, b1=1, b2=2), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=1))#this worked even before the PR. + # na.rm=TRUE with list column value, PR#4737 + test(1035.016, melt(data.table(a1=1, b1=list(1:2), b2=list(c('foo','bar'))), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=list(1:2))) + test(1035.017, melt(data.table(a1=1, b1=1, b2=2), na.rm=TRUE, measure.vars=list(a="a1", b=c("b1","b2"))), data.table(variable=factor(1), a=1, b=1))#this worked even before the PR. ans1 = cbind(DT[, c(1,2,8), with=FALSE], variable=factor("l_1")) ans1[, value := DT$l_1]