[Rd] make.packages.html

William Dunlap wdunlap at tibco.com
Tue Nov 17 17:57:07 CET 2009


> -----Original Message-----
> From: r-devel-bounces at r-project.org 
> [mailto:r-devel-bounces at r-project.org] On Behalf Of Duncan Murdoch
> Sent: Tuesday, November 17, 2009 2:50 AM
> To: Gabor Grothendieck
> Cc: r-devel at r-project.org
> Subject: Re: [Rd] make.packages.html
> 
> On 17/11/2009 5:33 AM, Gabor Grothendieck wrote:
> > In "R version 2.10.0 Patched (2009-11-15 r50445)" on Windows Vista
> > upon issuing help.start() and clicking on Packages I get this.
> > 
> > Packages in C:\Users\Gabor\Documents\R\win-library\2.10
> > 
> > C:\Users\Gabor\Documents/R/win-library/2.10/AER/DESCRIPTION -- Title
> > is missing --
> > 
> C:\Users\Gabor\Documents/R/win-library/2.10/akima/DESCRIPTION -- Title
> > is missing --
> > C:\Users\Gabor\Documents/R/win-library/2.10/car/DESCRIPTION -- Title
> > is missing --
> > C:\Users\Gabor\Documents/R/win-library/2.10/caroline/DESCRIPTION --
> > Title is missing --
> > ...
> > 
> > Looking at make.packages.html in utils, this code:
> > 
> >     for (lib in lib.loc) {
> >         pg <- Sys.glob(file.path(lib, "*", "DESCRIPTION"))
> >         pkgs[[lib]] <- sort(sub(paste(lib, "([^/]*)", 
> "DESCRIPTION$",
> >             sep = "/"), "\\1", pg))
> >     }
> > 
> > has the problem that lib can contain regular expression 
> characters but
> > is used in the pattern of sub.  This could be changed to 
> the following
> > which does not use lib in any pattern. Only the pkgs[[lib]]<-
> > statement is changed relative to the original:
> > 
> >     for (lib in lib.loc) {
> >         pg <- Sys.glob(file.path(lib, "*", "DESCRIPTION"))
> >         pkgs[[lib]] <- sort(sub(".*[\\/]", "", 
> sub(".DESCRIPTION$", "", pg)))
> >     }
> 
> Thanks, I'll take a look.

Hadley Wickham asked last week about a function that escaped
all the regular-expression special characters in a
string, so one could use gsub with fixed=TRUE,
and I suggested

   asFixedRegex <- function(pattern) {
      gsub("([][^${}().?*+|\\])", "\\\\\\1", pattern)
   }

(I left out the | in the original mail).  asFixedRegex()
could be used to fix this problem by changing 'lib' to
'asFixedRegex(lib)' in the offending call to sub
  sub(paste(asFixedRegex(lib), "([^/]*)", "DESCRIPTION$", sep = "/"),
     "\\1", pg)

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> 
> Duncan Murdoch
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 



More information about the R-devel mailing list