From 67979e301f3905e264a4098f9012cc45be6ef042 Mon Sep 17 00:00:00 2001 From: sluga Date: Wed, 17 Apr 2024 20:26:37 +0200 Subject: [PATCH] Pass skip_absent to colnamesInt --- R/data.table.R | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/R/data.table.R b/R/data.table.R index 5150583b0..bc9971c21 100644 --- a/R/data.table.R +++ b/R/data.table.R @@ -2692,14 +2692,8 @@ setcolorder = function(x, neworder=key(x), before=NULL, after=NULL,skip_absent=F stopf("Provide either before= or after= but not both") if (length(before)>1L || length(after)>1L) stopf("before=/after= accept a single column name or number, not more than one") - if (!isTRUEorFALSE(skip_absent)) - stopf("skip_absent should be TRUE or FALSE") - if (skip_absent && is.character(neworder)){ - neworder = intersect(neworder, colnames(x)) - } else if (skip_absent && is.numeric(neworder)){ - neworder = intersect(neworder, seq_along(x)) - } - neworder = colnamesInt(x, neworder, check_dups=FALSE) # dups are now checked inside Csetcolorder below + neworder = colnamesInt(x, neworder, check_dups=FALSE, skip_absent=skip_absent) # dups are now checked inside Csetcolorder below + neworder = setdiff(neworder, 0) # tests 498.11, 498.13 fail w/o this if (length(before)) neworder = c(setdiff(seq_len(colnamesInt(x, before) - 1L), neworder), neworder) if (length(after))