pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/math/R-dplyr



Module Name:    pkgsrc
Committed By:   mef
Date:           Tue Jun  9 23:26:45 UTC 2026

Modified Files:
        pkgsrc/math/R-dplyr: Makefile distinfo

Log Message:
(math/R-dplyr) Updated 1.1.4 to 1.2.1, fix build against R 4.6.0

# dplyr 1.2.1

* dplyr is now fully compliant with the R C API (#7819).

# dplyr 1.2.0

## New features

* New `filter_out()` companion to `filter()`.

  * Use `filter()` when specifying rows to _keep_.

  * Use `filter_out()` when specifying rows to _drop_.

  `filter_out()` simplifies cases where you would have previously used
  a `filter()` to drop rows. It is particularly useful when missing
  values are involved. For example, to drop rows where the `count` is
  zero:

  ```r
  df |> filter(count != 0 | is.na(count))

  df |> filter_out(count == 0)
  ```

  With `filter()`, you must provide a "negative" condition of `!= 0`
  and must explicitly guard against accidentally dropping rows with
  `NA`. With `filter_out()`, you directly specify rows to drop and you
  don't have to guard against dropping rows with `NA`, which tends to
  result in much clearer code.

  This work is a result of [Tidyup 8: Expanding the `filter()`
  family](https://github.com/tidyverse/tidyups/pull/30), with a lot of
  great feedback from the community (#6560, #6891).

* New `when_any()` and `when_all()`, which are elementwise versions of
  `any()` and `all()`. Alternatively, you can think of them as
  performing repeated `|` and `&` on any number of inputs, for
  example:

  * `when_any(x, y, z)` is equivalent to `x | y | z`.

  * `when_all(x, y, z)` is equivalent to `x & y & z`.

  `when_any()` is particularly useful within `filter()` and
  `filter_out()` to specify comma separated conditions combined with
  `|` rather than `&`, like:

  ```r
  # With `|`
  countries |>
    filter(
      (name %in% c("US", "CA") & between(score, 200, 300)) |
        (name %in% c("PR", "RU") & between(score, 100, 200))
    )

  # With `when_any()`, you drop the explicit `|`, the extra `()`, and your
  # conditions are all indented to the same level
  countries |>
    filter(when_any(
      name %in% c("US", "CA") & between(score, 200, 300),
      name %in% c("PR", "RU") & between(score, 100, 200)
    ))

  # To drop these rows instead, use `filter_out()`
  countries |>
    filter_out(when_any(
      name %in% c("US", "CA") & between(score, 200, 300),
      name %in% c("PR", "RU") & between(score, 100, 200)
    ))
  ```

  This work is a result of [Tidyup 8: Expanding the `filter()`
  family](https://github.com/tidyverse/tidyups/pull/30).

* `case_when()` is now part of a family of 4 related functions, 3 of which are new:

  * Use `case_when()` to create a new vector based on logical conditions.

  * Use `replace_when()` to update an existing vector based on logical
    conditions.

  * Use `recode_values()` to create a new vector by mapping all old
    values to new values.

  * Use `replace_values()` to update an existing vector by mapping
    some old values to new values.

  Learn all about these in a new vignette, `vignette("recoding-replacing")`.

  `replace_when()` is particularly useful for conditionally mutating
  rows within one or more columns, and can be thought of as an
  enhanced version of `base::replace()`.

  `recode_values()` and `replace_values()` have the familiar
  `case_when()`-style formula interface for easy interactive use, but
  also have `from` and `to` arguments as a way for you to incorporate
  a pre-built lookup table, making them more holistic replacements for
  both `case_match()` and `recode()`.

  This work is a result of [Tidyup 7: Recoding and replacing values in
  the
  tidyverse](https://github.com/tidyverse/tidyups/blob/main/007-tidyverse-recoding-and-replacing.md),
  with a lot of great
  [feedback](https://github.com/tidyverse/tidyups/pull/29) from the
  community (#7728, #7729).

* `case_when()` has gained a new `.unmatched` argument. For extra
  safety, set `.unmatched = "error"` rather than providing a
  `.default` when you believe that you've handled every possible case,
  and it will error if a case is left unhandled. The new
  `recode_values()` also has this argument (#7653).

* `if_else()`, `case_when()`, and `coalesce()` have gotten
  significantly faster and use much less memory due to a rewrite in C
  via vctrs (#7723, #7725, #7727).

* New `ptype` argument for `between()`, allowing users to specify the
  desired output type. This is particularly useful for ordered factors
  and other complex types where the default common type behavior might
  not be ideal (#6906, @JamesHWade).

* New `rbind()` method for `rowwise_df` to avoid creating corrupt
  rowwise data frames (r-lib/vctrs#1935).

## Lifecycle changes

### Newly stable

* `.by` has moved from experimental to stable (#7762).

* `reframe()` has moved from experimental to stable (#7713,
  @VisruthSK).

### Newly breaking

* `if_else()` no longer allows `condition` to be a logical array. It
  must be a logical vector with no `dim` attribute (#7723).

### Newly deprecated

* `case_match()` is soft-deprecated, and is fully replaced by
  `recode_values()` and `replace_values()`, which are more flexible,
  more powerful, and have much better names.

* In `case_when()`, supplying all size 1 LHS inputs along with a size
  >1 RHS input is now soft-deprecated. This is an improper usage of
  `case_when()` that should instead be a series of if statements,
  like:

  ```r
  # Scalars!
  code <- 1L
  flavor <- "vanilla"

  # Improper usage:
  case_when(
    code == 1L && flavor == "chocolate" ~ x,
    code == 1L && flavor == "vanilla" ~ y,
    code == 2L && flavor == "vanilla" ~ z,
    .default = default
  )

  # Recommended:
  if (code == 1L && flavor == "chocolate") {
    x
  } else if (code == 1L && flavor == "vanilla") {
    y
  } else if (code == 2L && flavor == "vanilla") {
    z
  } else {
    default
  }
  ```

  The recycling behavior that allows this style of `case_when()` to
  work is unsafe, and can result in silent bugs that we'd like to
  guard against with an error in the future (#7082).

* The `dplyr.legacy_locale` global option is soft-deprecated. If you
  used this to affect the ordering of `arrange()`, use
  `arrange(.locale =)` instead. If you used this to affect the
  ordering of `group_by() |> summarise()`, follow up with an
  additional call to `arrange(.locale =)` instead (#7760).

* Passing `size` to `if_else()` is now deprecated. The output size is
  always taken from the `condition` (#7722).

### Other deprecation advancements

* The following were already deprecated, and are now defunct and throw an error:

  * All underscored standard evaluation versions of major dplyr
    verbs. Deprecated in 0.7.0 (Jun 2017), use the non-underscored
    version of the verb with unquoting instead, see
    `vignette("programming")`. This includes:

    * `add_count_()`
    * `add_tally_()`
    * `arrange_()`
    * `count_()`
    * `distinct_()`
    * `do_()`
    * `filter_()`
    * `funs_()`
    * `group_by_()`
    * `group_indices_()`
    * `mutate_()`
    * `tally_()`
    * `transmute_()`
    * `rename_()`
    * `select_()`
    * `slice_()`
    * `summarise_()`
    * `summarize_()`

  * `mutate_each()`, `mutate_each_()`, `summarise_each()`, and
    `summarise_each_()`. Deprecated in 0.7.0 (Jun 2017), use
    `across()` instead.

  * Returning more or less than 1 row per group in
    `summarise()`. Deprecated in 1.1.0 (Jan 2023), use `reframe()`
    instead.

  * `combine()`. Deprecated in 1.0.0 (May 2020), use `c()` or
    `vctrs::vec_c()` instead.

  * `src_mysql()`, `src_postgres()`, `src_sqlite()`, `src_local()`,
    and `src_df()`. Deprecated in 1.0.0 (May 2020), use `tbl()`
    instead.

  * `tbl_df()` and `as.tbl()`. Deprecated in 1.0.0 (May 2020), use
    `tibble::as_tibble()` instead.

  * `add_rownames()`. Deprecated in 1.0.0 (May 2020), use
    `tibble::rownames_to_column()` instead.

  * The `.drop` argument of `add_count()`. Deprecated in 1.0.0 (May
    2020), had no effect.

  * The `add` argument of `group_by()` and
    `group_by_prepare()`. Deprecated in 1.0.0 (May 2020), use `.add`
    instead.

  * The `.dots` argument of `group_by()` and
    `group_by_prepare()`. Deprecated in 1.0.0 (May 2020).

  * The `...` argument of `group_keys()` and
    `group_indices()`. Deprecated in 1.0.0 (May 2020), use
    `group_by()` first.

  * The `keep` argument of `group_map()`, `group_modify()`, and
    `group_split()`. Deprecated in 1.0.0 (May 2020), use `.keep`
    instead.

  * Using `across()` and data frames in `filter()`. Deprecated in
    1.0.8 (Feb 2022), use `if_any()` or `if_all()` instead.

  * `multiple = NULL` in joins. Deprecated in 1.1.1 (Mar 2023), use
    `multiple = "all"` instead.

  * `multiple = "error" / "warning"` in joins. Deprecated in 1.1.1
    (Mar 2023), use `relationship = "many-to-one"` instead.

  * The `vars` argument of `group_cols()`. Deprecated in 1.0.0 (Jan
    2023).

* The following were already deprecated, and now warn unconditionally
  if used:

  * `all_equal()`. Deprecated in 1.1.0 (Jan 2023), use `all.equal()`
    instead.

  * `progress_estimated()`. Deprecated in 1.0.0 (May 2020).

  * `filter()` with a 1 column matrix. Deprecated in 1.1.0 (Jan 2023),
    use a vector instead.

  * `slice()` with a 1 column matrix. Deprecated in 1.1.0 (Jan 2023),
    use a vector instead.

  * Not supplying the `.cols` argument of `across()`. Deprecated in
    1.1.0 (Jan 2023).

  * `group_indices()` with no arguments. Deprecated in 1.0.0 (May
    2020), use `cur_group_id()` instead.

* The following were already soft-deprecated, and now warn once per
  session if used:

  * `cur_data()` and `cur_data_all()`. Deprecated in 1.1.0 (Jan 2023),
    use `pick()` instead.

  * The `...` argument of `across()`. Deprecated in 1.1.0 (Jan 2023),
    use an anonymous function instead.

  * Using `by = character()` to perform a cross join. Deprecated in
    1.1.0 (Jan 2023), use `cross_join()` instead.

### Removed

The following were already defunct, and have been removed:

* `id()`. Deprecated in 0.5.0 (Jun 2016), use `vctrs::vec_group_id()`
  instead. If your package uses NSE and implicitly relied on the
  variable `id` being available, you now need to put
  `utils::globalVariables("id")` inside one of your package files to
  tell R that `id` is a column name.

* `failwith()`. Deprecated in 0.7.0 (Jun 2017), use
  `purrr::possibly()` instead.

* `select_vars()` and `select_vars_()`. Deprecated in 0.8.4 (Jan
  2020), use `tidyselect::vars_select()` instead.

* `rename_vars()` and `rename_vars_()`. Deprecated in 0.8.4 (Jan
  2020), use `tidyselect::vars_rename()` instead.

* `select_var()`. Deprecated in 0.8.4 (Jan 2020), use
  `tidyselect::vars_pull()` instead.

* `current_vars()`. Deprecated in 0.8.4 (Jan 2020), use
  `tidyselect::peek_vars()` instead.

* `bench_tbls()`, `compare_tbls()`, `compare_tbls2()`, `eval_tbls()`,
  and `eval_tbls2()`. Deprecated in 1.0.0 (May 2020).

* `location()` and `changes()`. Deprecated in 1.0.0 (May 2020), use
  `lobstr::ref()` instead.

## Minor improvements and bug fixes

* The base pipe is now used throughout the documentation (#7711).

* The superseded `recode()` now has updated documentation showing how
  to migrate to `recode_values()` and `replace_values()`.

* The `.groups` message emitted by `summarise()` is hopefully more
  clear now (#6986).

* `storms` has been updated to include 2023 and 2024 data (#7111,
  @tomalrussell).

* `if_any()` and `if_all()` are now more consistent in all use cases
  (#7059, #7077, #7746, @jrwinget). In particular:

  * When called with zero inputs, `if_any()` returns `FALSE` and
    `if_all()` returns `TRUE`.

  * When called with one input, both now return logical vectors rather
    than the original column.

  * The result of applying `.fns` now must be a logical vector.

* `tally_n()` creates fully qualified funciton calls for duckplyr
  compatibility (#7046)

* Empty `rowwise()` list-column elements now resolve to `logical()`
  rather than a random logical of length 1 (#7710).

* `last_dplyr_warnings()` no longer prevents objects from being
  garbage collected (#7649).

* `case_when()` now throws correctly indexed errors when `NULL`s are
  supplied in `...` (#7739).

* `case_when()` now throws a better error if one of the conditions is
  an array (#6862, @ilovemane).

* `bind_rows()` now replaces empty (or `NA`) element names in a list
  with its numeric index while preserving existing names (#7719,
  @Meghansaha).

* New `slice_sample()` example showing how to use it to shuffle rows
  (#7707, @Hzanib).

* Updated `across()` examples to include an example using
  `everything()` (#7621, @JBrandenburg02).

* Clarified how `slice_min()` and `slice_max()` work in the
  introduction vignette (#7717, @ccani007).

* Fixed an edge case when coercing data frames to matrices (#7004).

* Fixed an issue where duckplyr's ALTREP data frames were being
  materialized early due to internal usage of `ncol()` (#7049).

* Progress towards making dplyr conformant with the public C API of R
  (#7741, #7797).

* R >=4.1.0 is now required, in line with the [tidyverse
  standard](https://tidyverse.org/blog/2019/04/r-version-support/) of
  supporting the previous 5 minor releases of R (#7711).


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 pkgsrc/math/R-dplyr/Makefile
cvs rdiff -u -r1.11 -r1.12 pkgsrc/math/R-dplyr/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/math/R-dplyr/Makefile
diff -u pkgsrc/math/R-dplyr/Makefile:1.12 pkgsrc/math/R-dplyr/Makefile:1.13
--- pkgsrc/math/R-dplyr/Makefile:1.12   Sat Sep 27 09:57:27 2025
+++ pkgsrc/math/R-dplyr/Makefile        Tue Jun  9 23:26:45 2026
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.12 2025/09/27 09:57:27 wiz Exp $
+# $NetBSD: Makefile,v 1.13 2026/06/09 23:26:45 mef Exp $
 
 R_PKGNAME=     dplyr
-R_PKGVER=      1.1.4
+R_PKGVER=      1.2.1
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
 COMMENT=       Grammar of data manipulation

Index: pkgsrc/math/R-dplyr/distinfo
diff -u pkgsrc/math/R-dplyr/distinfo:1.11 pkgsrc/math/R-dplyr/distinfo:1.12
--- pkgsrc/math/R-dplyr/distinfo:1.11   Sun Jan 21 04:11:36 2024
+++ pkgsrc/math/R-dplyr/distinfo        Tue Jun  9 23:26:45 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.11 2024/01/21 04:11:36 mef Exp $
+$NetBSD: distinfo,v 1.12 2026/06/09 23:26:45 mef Exp $
 
-BLAKE2s (R/dplyr_1.1.4.tar.gz) = ee65d80bdfd1809268a927a5ebda7c55e81ceeee0e4f631b20d9790d4c7cb969
-SHA512 (R/dplyr_1.1.4.tar.gz) = 526b9131d42d1e57ae32079341cf3c1ca06ed9930b4f73e8cb75df2d916d8c345e60cf9f26d4796a4516939589f42d93bd4dcb632de67805c78ac96714c4901e
-Size (R/dplyr_1.1.4.tar.gz) = 1207521 bytes
+BLAKE2s (R/dplyr_1.2.1.tar.gz) = 3eb42832824a04107abebbd3110aa467622aaa38091cb35118403c5e79c8a2f3
+SHA512 (R/dplyr_1.2.1.tar.gz) = d42fa9ab7a4d6eef914790d4aad60b7e591faa22295043c3df4984a1704d94f70587c547d3c08736585e7471e5c610496b5e03c45693887a5a9231877309ba13
+Size (R/dplyr_1.2.1.tar.gz) = 923509 bytes



Home | Main Index | Thread Index | Old Index