From 4b528c96625e8fda40afe2ace7a712a6b10e2037 Mon Sep 17 00:00:00 2001 From: coffeecookey Date: Sun, 28 Dec 2025 00:06:38 +0530 Subject: [PATCH 1/2] implementing NSE in cube --- R/groupingsets.R | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/R/groupingsets.R b/R/groupingsets.R index f5fc2101f1..c5e3cdea03 100644 --- a/R/groupingsets.R +++ b/R/groupingsets.R @@ -29,6 +29,16 @@ cube.data.table = function(x, j, by, .SDcols, id = FALSE, label = NULL, ...) { stopf("Argument 'id' must be a logical scalar.") if (missing(j)) stopf("Argument 'j' is required") + + if (missing(.SDcols)) { + .SDcols = NULL + } else { + sub.result = substitute(.SDcols) + if (is.call(sub.result)) { + .SDcols = eval_with_cols(sub.result, names(x)) + } + } + # generate grouping sets for cube - power set: http://stackoverflow.com/a/32187892/2490497 n = length(by) keepBool = sapply(2L^(seq_len(n)-1L), function(k) rep(c(FALSE, TRUE), times=k, each=((2L^n)/(2L*k)))) From b7ad982f2031656847b64f17a3e12e654b9080bc Mon Sep 17 00:00:00 2001 From: coffeecookey Date: Sun, 28 Dec 2025 15:02:48 +0530 Subject: [PATCH 2/2] adding NSE to cube function --- R/groupingsets.R | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/R/groupingsets.R b/R/groupingsets.R index c5e3cdea03..51e2e53114 100644 --- a/R/groupingsets.R +++ b/R/groupingsets.R @@ -29,14 +29,21 @@ cube.data.table = function(x, j, by, .SDcols, id = FALSE, label = NULL, ...) { stopf("Argument 'id' must be a logical scalar.") if (missing(j)) stopf("Argument 'j' is required") - - if (missing(.SDcols)) { - .SDcols = NULL - } else { - sub.result = substitute(.SDcols) - if (is.call(sub.result)) { - .SDcols = eval_with_cols(sub.result, names(x)) + +#implementing NSE in cube +jj = substitute(j) +usesSD = any(all.vars(jj) == ".SD") + if (usesSD) { + if (missing(.SDcols)) { + .SDcols = names(x)[vapply(x, is.numeric, logical(1L))] + } else { + sub.result = substitute(.SDcols) + if (is.call(sub.result)) { + .SDcols = eval_with_cols(sub.result, names(x)) + } } + } else { + .SDcols = NULL } # generate grouping sets for cube - power set: http://stackoverflow.com/a/32187892/2490497