[R] Installed packages: Bioconductor vs CRAN?

Leonard Mada
2021-09-25T00:31:06Z

Dear Bert,


The DESCRIPTION file contains additional useful information, e.g.:

1.) Package EBImage:
biocViews: Visualization
Packaged: 2021-05-19 23:53:29 UTC; biocbuild


2.) deSolve
Repository: CRAN


I have verified a few of the CRAN packages, and they seem to include the
tag:

Repository: CRAN


The Bioconductor packages are different (see e.g. EBImage).

I am wondering if there is already a method to extract this info?


Sincerely,


Leonard


On 9/25/2021 3:06 AM, Bert Gunter 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.