efficientR icon indicating copy to clipboard operation
efficientR copied to clipboard

Using deprecated function rbind_all of dplyr package which is no longer supported and code fails

Open shafayetShafee opened this issue 3 years ago • 4 comments

Code snippet from 1.6.3 Profiling contains a function dplyr::rbind_all() which is no longer supported the current version of dplyr package.

Code snippet from book

library("profvis")
profvis(expr = {

  library("ggplot2")
  out = readRDS("extdata/out-ice.Rds")
  df = dplyr::rbind_all(out, id = "Year")

  ggplot(df, aes(long, lat, group = paste(group, Year))) +
    geom_path(aes(colour = Year))
  ggsave("figures/icesheet-test.png")
}, interval = 0.01, prof_output = "ice-prof")

When tried to create a dataframe from out using rbind_all got the following error

extdata_path <- "https://raw.githubusercontent.com/csgillespie/efficientR/master/extdata/"
out <- readr::read_rds(paste0(extdata_path, "out-ice.Rds"))
df = dplyr::rbind_all(out, id = "Year")
#> Error: 'rbind_all' is not an exported object from 'namespace:dplyr'

Fix

Now dplyr offers bind_rows function to bind data-frames which should be used instead of rbind_all

extdata_path <- "https://raw.githubusercontent.com/csgillespie/efficientR/master/extdata/"
out <- readr::read_rds(paste0(extdata_path, "out-ice.Rds"))
df <- dplyr::bind_rows(out, .id = "Year")
  head(df)
#>   Year   long     lat order  hole piece id group
#> 1 1985 575000 5700000     1 FALSE     1  0   0.1
#> 2 1985 600000 5700000     2 FALSE     1  0   0.1
#> 3 1985 600000 5675000     3 FALSE     1  0   0.1
#> 4 1985 575000 5675000     4 FALSE     1  0   0.1
#> 5 1985 575000 5700000     5 FALSE     1  0   0.1
#> 6 1985 500000 5625000     1 FALSE     1  1   1.1

Please note that I am using dplyr version 1.0.8

packageVersion("dplyr")
#> [1] '1.0.8'

shafayetShafee avatar Jun 14 '22 17:06 shafayetShafee

@Robinlovelace, Can I make a pull request suggesting this fix 😃?

shafayetShafee avatar Jun 15 '22 10:06 shafayetShafee

@Robinlovelace, Can I make a pull request suggesting this fix smiley?

Yes, that would be greatly appreciated. Apologies for slow response..

Robinlovelace avatar Jun 16 '22 14:06 Robinlovelace

@Robinlovelace, I need help with another thing, that is, which of the following approach should I follow to read the out-ice.Rds,

out = readRDS("extdata/out-ice.Rds")

which will not work for someone, who just wants to copy code from the book and run it.

Or,

extdata_path <- "https://raw.githubusercontent.com/csgillespie/efficientR/master/extdata/"
out <- readr::read_rds(paste0(extdata_path, "out-ice.Rds"))

which will require the reader to install the readr package and this should be mentioned in the prerequisites section of the 1st chapter of the book.

Thank you 😄!

shafayetShafee avatar Jun 16 '22 16:06 shafayetShafee

I like the 2nd option better, good point!

Robinlovelace avatar Jun 17 '22 07:06 Robinlovelace