[R] Installed packages: Bioconductor vs CRAN?

Bert Gunter
2021-09-25T00:09:48Z

Oh, I should have added that packages can be on other repositories
(local, github,...) and I think can be both in CRAN and BIOC . So your
query would not seem to have a clear answer. AFAICS anyway.

Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Fri, Sep 24, 2021 at 5:06 PM Bert Gunter <bgunter.4567 at gmail.com>
wrote:
>
> The help file tells you that installed.packages() looks at the
> DESCRIPTION files of packages.
> Section 1.1.1 of "Writing R Extensions" tells you what
information is
> in such files.
>
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip
)
>
> On Fri, Sep 24, 2021 at 4:56 PM Leonard Mada via R-help
> <r-help at r-project.org> wrote:
> >
> > Dear List Members,
> >
> >
> > Is there a way to extract if an installed package is from Bioconductor
> > or if it is a regular Cran package?
> >
> >
> > The information seems to be *not* available in:
> >
> > installed.packages()
> >
> >
> > Sincerely,
> >
> >
> > Leonard
> >
> > ======> >
> > I started to write some utility functions to analyse installed
packages.
> > The latest version is on Github:
> > https://github.com/discoleo/R/blob/master/Stat/Tools.CRAN.R
> >
> >
> > # Basic Info:
> > info.pkg = function(pkg=NULL) {
> >      if(is.null(pkg)) { pkg = installed.packages(); }
> >      else {
> >          all.pkg = installed.packages();
> >          pkg = all.pkg[all.pkg[,1] %in% pkg, ];
> >      }
> >      p = pkg;
> >      p = as.data.frame(p);
> >      p = p[ , c("Package", "Version",
"Built", "Imports")];
> >      return(p);
> > }
> > # Imported packages:
> > imports.pkg = function(pkg=NULL, sort=TRUE) {
> >      p = info.pkg(pkg);
> >      ### Imported packages
> >      imp = lapply(p$Imports, function(s) strsplit(s, "[,][
]*"))
> >      imp = unlist(imp)
> >      imp = imp[ ! is.na(imp)]
> >      # Cleanup:
> >      imp = sub("[ \n\r\t]*+\\([-,. >=0-9\n\t\r]++\\)
*+$", "", imp,
> > perl=TRUE)
> >      imp = sub("^[ \n\r\t]++", "", imp,
perl=TRUE);
> >      # Tabulate:
> >      tbl = as.data.frame(table(imp), stringsAsFactors=FALSE);
> >      names(tbl)[1] = "Name";
> >      if(sort) {
> >          id = order(tbl$Freq, decreasing=TRUE);
> >          tbl = tbl[id,];
> >      }
> >      return(tbl);
> > }
> >
> > match.imports = function(pkg, x=NULL, quote=FALSE) {
> >      if(is.null(x)) x = info.pkg();
> >      if(quote) {
> >          pkg = paste0("\\Q", pkg, "\\E");
> >      }
> >      # TODO: Use word delimiters?
> >      # "(<?=^|[ \n\r\t],)"
> >      if(length(pkg) == 1) {
> >          isImport = grepl(pkg, x$Imports);
> >          return(x[isImport, ]);
> >      } else {
> >          # TODO: concept?
> >          rez = lapply(pkg, function(p) x[grepl(p, x$Imports), ]);
> >          return(rez);
> >      }
> > }
> >
> > Examples:
> >
> > p = info.pkg();
> > f = imports.pkg();
> >
> > ### Analyze data
> >
> > # imported only once: (only in the locally installed packages)
> > f$Name[f$Freq == 1]
> >
> > match.imports("hunspell", p)
> > match.imports("labeling", p)
> > match.imports("rpart.plot", p)
> >
> > match.imports(c("pROC", "ROCR"), p)
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.