sessionInfo() into R install

Is there a way I can share my sessionInfo() with collaborators such that the output of packages is in an R user friendly form for installing any packages they don't have e.g. a named vector of package names and versions, or similar?
I never realised how unfriendly the sessionInfo() output is to work with until people told me they were going through it in text form with a ctrl + f to see if they had each package installed: this is obviously not ideal and I would appreciate any advice.

Here is a piece of code I picked up somewhere. Is it of any help?

installed.packages()[names(sessionInfo()$otherPkgs), "Version"]
2 Likes
pkg  <- installed.packages()[,1]
attributes(pkg) <- NULL
# example of installed packages
have <- pkg[1:10]
# the sf package has been included
reqr <- sessionInfo()
# would have to loop through the first list
# in an actual case3
need <- reqr$otherPkgs[1][[1]][1][[1]]
need
# doesn't work in reprex because if library(sf) were added ...
#> NULL
# to install
to_add <- setdiff(have,need)
to_add
#>  [1] "abind"         "admiral"       "admiraldev"    "afex"         
#>  [5] "agricolae"     "AlgDesign"     "annotate"      "AnnotationDbi"
#>  [9] "anytime"       "arsenal"
# not run
# install.packages(to_add)

Created on 2023-07-30 with reprex v2.0.2

1 Like

May I suggest an alternative solution? If you want to keep track of installed packages in a reproducible way, use renv. It installs and maintains packages for you, it creates a JSON file called renv.lock with not only the names, but also versions of installed packages. You create renv.lock file with

renv::snapshot()

and your collaborator can recreate all your packages, with exactly the same version numbers using

renv::restore()

Certainly a better way of sharing package environment than sessionInfo().

2 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.