Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Welcome to the fourth post in the repulsively random R ramblings series, or R4 for short.

My twitter feed was buzzing about a nice (and as yet unpublished, ie not-on-CRAN) package https://github.com/dirkschumacher/thankr by Dirk Schumacher which compiles a a list of packages (ordered by maintainer count) for your current session (or installation or …) with a view towards saying thank you to those whose packages we rely upon. Very nice indeed.

I had a quick look and run it twice … and had a reaction of ewwww, really? as running it twice gave different results as on the second instance a boatload of tibblyverse packages appeared. Because apparently kids these day can only slice data that has been tidied or something.

So I had another quick look … and put together an alternative version using just base R (as there was only one subfunction that needed reworking):

source(file="https://raw.githubusercontent.com/dirkschumacher/thankr/master/R/shoulders.R")
format_pkg_df <- function(df) { # non-tibblyverse variant
tb <- table(df[,2])
od <- order(tb, decreasing=TRUE)
ndf <- data.frame(maint=names(tb)[od], npkgs=as.integer(tb[od]))
colpkgs <- function(m, df) { paste(df[ df$maintainer == m, "pkg_name"], collapse=",") } ndf[, "pkg"] <- sapply(ndf$maint, colpkgs, df)
ndf
}

Running this in the ESS session I had open gives:

R> shoulders()  ## by Dirk Schumacher, with small modifications
maint npkgs                                                                 pkg
1 R Core Team <[email protected]>     9 compiler,graphics,tools,utils,grDevices,stats,datasets,methods,base
2 Dirk Eddelbuettel <[email protected]>     4                                  RcppTOML,Rcpp,RApiDatetime,anytime
3  Matt Dowle <[email protected]>     1                                                          data.table
R> 

and for good measure a screen is below:

I think we need a catchy moniker for R work using good old base R. SoberVerse? GrumbyOldFolksR? PlainOldR? Better suggestions welcome.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.