diff --git a/R/nest.R b/R/nest.R index 012c9143f..b08e5aa45 100644 --- a/R/nest.R +++ b/R/nest.R @@ -128,7 +128,13 @@ nest <- function(.data, ..., .names_sep = NULL, .key = deprecated()) { .key <- if (missing(.key)) "data" else as.character(ensym(.key)) - cols_fixed_expr <- expr(c(!!!cols_bad)) + if (length(cols_bad) == 1L) { + cols_bad <- cols_bad[[1]] + cols_fixed_expr <- expr(!!cols_bad) + } else { + cols_fixed_expr <- expr(c(!!!cols_bad)) + } + cols_fixed_label <- as_label(cols_fixed_expr) cols_fixed <- quos(!!.key := !!cols_fixed_expr) diff --git a/tests/testthat/_snaps/nest.md b/tests/testthat/_snaps/nest.md index d2df2e052..8248e4f9d 100644 --- a/tests/testthat/_snaps/nest.md +++ b/tests/testthat/_snaps/nest.md @@ -44,7 +44,15 @@ out <- nest(df, y) Warning All elements of `...` must be named. - Did you want `data = c(y)`? + Did you want `data = y`? + +--- + + Code + out <- nest(df, -y) + Warning + All elements of `...` must be named. + Did you want `data = -y`? # only warn about unnamed inputs (#1175) @@ -68,7 +76,7 @@ out <- nest(df, y, .key = "y") Warning All elements of `...` must be named. - Did you want `y = c(y)`? + Did you want `y = y`? # can control output column name when nested diff --git a/tests/testthat/test-nest.R b/tests/testthat/test-nest.R index 518fa7998..145007688 100644 --- a/tests/testthat/test-nest.R +++ b/tests/testthat/test-nest.R @@ -311,8 +311,12 @@ test_that("unnest keeps list cols", { test_that("warn about old style interface", { df <- tibble(x = c(1, 1, 1), y = 1:3) + expect_snapshot(out <- nest(df, y)) expect_named(out, c("x", "data")) + + expect_snapshot(out <- nest(df, -y)) + expect_named(out, c("y", "data")) }) test_that("only warn about unnamed inputs (#1175)", {