ropensci / skimr

A frictionless, pipeable approach to dealing with summary statistics
https://docs.ropensci.org/skimr
1.11k stars 78 forks source link

Deprecated usage of `vec_equal_na()` from {vctrs} #719

Closed fkohrt closed 1 year ago

fkohrt commented 1 year ago

Description

{skimr} (current main: 5080202) makes use of code that is deprecated with {vctrs} 0.5.0.

Reproducible example

withr::with_options(list(lifecycle_verbosity = "error"),
                    skimr::skim(iris))
Error in `dplyr::summarize()`:
! Problem while computing `skimmed =
  purrr::map2(...)`.
ℹ The error occurred in group 2: skim_type = "numeric".
Caused by error:
! `vec_equal_na()` was deprecated in vctrs 0.5.0.
ℹ Please use `vec_detect_missing()` instead.
Run `rlang::last_error()` to see where the error occurred.

Expected result

No error.

Session info

sessionInfo() ``` R version 4.2.1 (2022-06-23) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 18.04.6 LTS Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3 LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so locale: [1] LC_CTYPE=en_US.UTF-8 [2] LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 [6] LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 [8] LC_NAME=C [9] LC_ADDRESS=C [10] LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 [12] LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets [6] methods base loaded via a namespace (and not attached): [1] pillar_1.8.1 compiler_4.2.1 [3] prettyunits_1.1.1 base64enc_0.1-3 [5] remotes_2.4.2 tools_4.2.1 [7] digest_0.6.30 pkgbuild_1.3.1 [9] jsonlite_1.8.3 lifecycle_1.0.3 [11] tibble_3.1.8 pkgconfig_2.0.3 [13] rlang_1.0.6 cli_3.4.1 [15] DBI_1.1.3 rstudioapi_0.14 [17] curl_4.3.3 xfun_0.34 [19] fastmap_1.1.0 stringr_1.4.1 [21] repr_1.1.4 withr_2.5.0 [23] dplyr_1.0.10 knitr_1.40 [25] generics_0.1.3 vctrs_0.5.0 [27] rprojroot_2.0.3 tidyselect_1.2.0 [29] glue_1.6.2 R6_2.5.1 [31] processx_3.8.0 fansi_1.0.3 [33] tidyr_1.2.1 purrr_0.3.5 [35] callr_3.7.3 skimr_2.1.4 [37] magrittr_2.0.3 ellipsis_0.3.2 [39] ps_1.7.2 htmltools_0.5.3 [41] assertthat_0.2.1 utf8_1.2.2 [43] stringi_1.7.8 crayon_1.5.2 ```
elinw commented 1 year ago

This is fixed with the updates for the changes to purrr from what I can tell. Closing but please let us know if that is not true. Thanks!

fkohrt commented 1 year ago

Unfortunately, with the latest {skimr} I get the same error as before. This is my sessionInfo():

R version 4.2.1 (2022-06-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.6 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so

locale:
 [1] LC_CTYPE=en_US.UTF-8      
 [2] LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8      
 [8] LC_NAME=C                 
 [9] LC_ADDRESS=C              
[10] LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8
[12] LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils    
[5] datasets  methods   base     

loaded via a namespace (and not attached):
 [1] rstudioapi_0.14  knitr_1.41      
 [3] magrittr_2.0.3   tidyselect_1.2.0
 [5] R6_2.5.1         rlang_1.0.6     
 [7] fastmap_1.1.0    fansi_1.0.3     
 [9] stringr_1.5.0    skimr_2.1.5     
[11] dplyr_1.0.10     tools_4.2.1     
[13] xfun_0.35        utf8_1.2.2      
[15] cli_3.5.0        DBI_1.1.3       
[17] withr_2.5.0      ellipsis_0.3.2  
[19] htmltools_0.5.4  assertthat_0.2.1
[21] digest_0.6.31    tibble_3.1.8    
[23] lifecycle_1.0.3  tidyr_1.2.1     
[25] purrr_1.0.0      repr_1.1.4      
[27] base64enc_0.1-3  vctrs_0.5.1     
[29] glue_1.6.2       stringi_1.7.8   
[31] compiler_4.2.1   pillar_1.8.1    
[33] generics_0.1.3   jsonlite_1.8.4  
[35] pkgconfig_2.0.3 
elinw commented 1 year ago

You pulled it from github? I didn't mean it was fixed on CRAN, trying to submit today.

fkohrt commented 1 year ago

Yes, and to be on the reproducible side, this is what I do:

Binder

update.packages(ask = FALSE)
remotes::install_github("ropensci/skimr")
withr::with_options(list(lifecycle_verbosity = "error"),
                    skimr::skim(iris))
elinw commented 1 year ago

@michaelquinn32 Can you take a look at this please?

elinw commented 1 year ago

Interestingly, that function is not called directly in the package. It seems to be an error in map2() not skimr. I think it is in {funs}

michaelquinn32 commented 1 year ago

We use tidyr::unnest() throughout. I think that's the root of the issue. Example traceback:

Backtrace:
  1. skimr:::expect_print_matches_file(skim(DT_factors), "data.table/summary_DT_factors_no_key.txt")
       at test-data.table.R:42:2
 11. skimr::skim(DT_factors)
 14. tidyr:::unnest.data.frame(nested, "skimmed")
 15. tidyr::unchop(data, any_of(cols), keep_empty = keep_empty, ptype = ptype)
 16. tidyr:::df_unchop(cols, ptype = ptype, keep_empty = keep_empty)
 17. tidyr:::list_init_empty(x = col, null = TRUE, typed = keep_empty)
 18. vctrs::vec_equal_na(x)
 19. lifecycle::deprecate_soft("0.5.0", "vec_equal_na()", "vec_detect_missing()")
 20. lifecycle:::deprecate_stop0(msg)
elinw commented 1 year ago

Yes, though I searched the whole tidyverse organization and the only place I could find it used was in funs.

fkohrt commented 1 year ago

I cannot reproduce this problem anymore, so I'm closing this :)