From 958015f869b40e643e6ccafacb467698d7b3fa2a Mon Sep 17 00:00:00 2001 From: Romain Francois Date: Wed, 10 Mar 2021 11:43:46 +0100 Subject: [PATCH 1/2] use vctrs:::vec_order_locs() --- R/grouped-df.r | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/R/grouped-df.r b/R/grouped-df.r index 9166b4da43..5ab67f4211 100644 --- a/R/grouped-df.r +++ b/R/grouped-df.r @@ -297,10 +297,9 @@ expand_groups <- function(old_groups, positions, nr) { } vec_split_id_order <- function(x) { - split_id <- vec_group_loc(x) - split_id$loc <- new_list_of(split_id$loc, ptype = integer()) - - vec_slice(split_id, vec_order(split_id$key)) + split_id <- vctrs:::vec_order_locs(x) + split_id$loc <- new_list_of(split_id$loc, integer()) + split_id } group_intersect <- function(x, new) { From f959f0587c26d168cd7696b0e6db1b08db3c5d0b Mon Sep 17 00:00:00 2001 From: Romain Francois Date: Wed, 10 Mar 2021 13:24:36 +0100 Subject: [PATCH 2/2] using vctrs:::vec_order_radix() in arrange() --- R/arrange.R | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/R/arrange.R b/R/arrange.R index 091514aead..2fdec52638 100644 --- a/R/arrange.R +++ b/R/arrange.R @@ -131,24 +131,5 @@ arrange_rows <- function(.data, dots) { }) - # we can't just use vec_compare_proxy(data) because we need to apply - # direction for each column, so we get a list of proxies instead - # and then mimic vctrs:::order_proxy - # - # should really be map2(quosures, directions, ...) - proxies <- map2(data, directions, function(column, direction) { - proxy <- vec_proxy_order(column) - desc <- identical(direction, "desc") - if (is.data.frame(proxy)) { - proxy <- order(vec_order(proxy, - direction = direction, - na_value = if(desc) "smallest" else "largest" - )) - } else if(desc) { - proxy <- desc(proxy) - } - proxy - }) - - exec("order", !!!unname(proxies), decreasing = FALSE, na.last = TRUE) + vctrs:::vec_order_radix(data, direction = directions) }