diff --git a/r/R/dplyr-arrange.R b/r/R/dplyr-arrange.R index 247a539f527..bf53bd18852 100644 --- a/r/R/dplyr-arrange.R +++ b/r/R/dplyr-arrange.R @@ -76,7 +76,7 @@ find_and_remove_desc <- function(quosure) { if (identical(expr[[1]], quote(`(`))) { # remove enclosing parentheses expr <- expr[[2]] - } else if (identical(expr[[1]], quote(desc))) { + } else if (identical(expr[[1]], quote(desc)) || identical(expr[[1]], quote(dplyr::desc))) { # ensure desc() has only one argument (when an R expression is a function # call, length == 2 means it has exactly one argument) if (length(expr) > 2) { diff --git a/r/tests/testthat/test-dplyr-arrange.R b/r/tests/testthat/test-dplyr-arrange.R index fee1475a44e..66e5ac24f80 100644 --- a/r/tests/testthat/test-dplyr-arrange.R +++ b/r/tests/testthat/test-dplyr-arrange.R @@ -33,12 +33,24 @@ test_that("arrange() on integer, double, and character columns", { collect(), tbl ) + compare_dplyr_binding( + .input %>% + arrange(int, dplyr::desc(dbl)) %>% + collect(), + tbl + ) compare_dplyr_binding( .input %>% arrange(int, desc(desc(dbl))) %>% collect(), tbl ) + compare_dplyr_binding( + .input %>% + arrange(int, dplyr::desc(dplyr::desc(dbl))) %>% + collect(), + tbl + ) compare_dplyr_binding( .input %>% arrange(int) %>% @@ -46,6 +58,13 @@ test_that("arrange() on integer, double, and character columns", { collect(), tbl ) + compare_dplyr_binding( + .input %>% + arrange(int) %>% + arrange(dplyr::desc(dbl)) %>% + collect(), + tbl + ) compare_dplyr_binding( .input %>% arrange(int + dbl, chr) %>% @@ -200,4 +219,11 @@ test_that("arrange() with bad inputs", { "expects only one argument", fixed = TRUE ) + expect_error( + tbl %>% + Table$create() %>% + arrange(dplyr::desc(int, chr)), + "expects only one argument", + fixed = TRUE + ) })