[Bioc-devel] Creating a package, Error in match.arg(units)
Patrick Aboyoun
paboyoun at fhcrc.org
Mon Aug 31 20:27:36 CEST 2009
Sébastien,
In addition to Martin's comments, copying code from Hmisc to your package could be a violation of Hmisc's license. As Martin's e-mail shows, importing symbols is a straight-forward process and is the recommended method in this situation.
Patrick
Martin Morgan wrote:
> Sébastien Laigre wrote:
>
>> Hi Martin,
>>
>> Thank you for answering. I managed to solved my problem. In fact, it was
>> a conflict between Hmisc and xtable. Hmisc overrided units from base
>> package, and xtable needed it, so there was a problem. I used only 2
>> functions, so I copied/pasted these 2 functions in my package, and do
>> not use Hmisc. So the problem disapeared !
>>
>
> A better solution is to use a name space and 'importsFrom', for instance
> in the DESCRIPTION file:
>
> Imports: Hmisc
>
> and in the NAMESPACE file
>
> importFrom(Hmisc, someFunction, anotherFunction)
>
> if you are not already using a name space, then I'd strongly encourage
> you to use one. It'll help avoid conflicts like this in the future. Use
> is documented in the 'Writing R extensions' manual.
>
> Martin
>
>
>> Thank you very much for your help.
>>
>>
>> 2009/8/27 Martin Morgan <mtmorgan at fhcrc.org <mailto:mtmorgan at fhcrc.org>>
>>
>> Sébastien Laigre wrote:
>> > Hi Martin,
>> >
>> > I just saw that in install.out, there are the following lines :
>> >
>> >> Attachement du package : 'Hmisc'
>> >>
>> >> The following object(s) are masked from package:base :
>> >>
>> >> format.pval,
>> >> round.POSIXt,
>> >> trunc.POSIXt,
>> >> units
>> >
>> > Then an error occurs with match.arg(units)...
>> >
>> > So, could it be a conflict between "units" of Hmisc package and
>> "units"
>> > of base package ?
>> > It sounds that units is taken from Hmisc instead of base, how can tell
>> > the compiler to take it into base package ? I tried with importFrom in
>> > NAMESPACE but it sounds it is not allowed...
>>
>> Your own package should have a name space, and if you use functions from
>> Hmisc you should import just those
>>
>> importFrom(Hmisc, foo, bar, baz)
>>
>> If you are importing from Hmisc, then the DESCRIPTION file should have
>> Imports: Hmisc. If there are still problems, you can fully qualify the
>> symbols that you want
>>
>> base::units
>>
>> It might be that there is still a problem, e.g., a third package that
>> does not have a name space but uses units, and so must find 'units' on
>> the search() path. In this case you must work around this by convincing
>> the third party author to use a name space, not use the third package,
>> or not use Hmisc.
>>
>> Martin
>>
>> >
>> > Thank you in advance.
>> >
>> > Sebastien
>> >
>> >
>> > 2009/8/26 Sébastien Laigre <sebastien.laigre at gmail.com
>> <mailto:sebastien.laigre at gmail.com>
>> > <mailto:sebastien.laigre at gmail.com
>> <mailto:sebastien.laigre at gmail.com>>>
>> >
>> > Hi Martin,
>> >
>> > Thank you for your suggestions. I tried once again with LazyLoad =
>> > no (in DESCRIPTION file), and now, it tells me :
>> >
>> > ...
>> > Attachement du package : 'xtable'
>> >
>> >
>> >
>> > The following object(s) are masked from package:Hmisc :
>> >
>> > label,
>> > label<-
>> >
>> > Error in match.arg(units) :
>> > 'arg' doit Ûtre un de "secs", "mins", "hours", "days"
>> > Error : impossible de charger le code R depuis le package 'MyApp'
>> > Erreur : le chargement du package / espace de noms a ÚchouÚ
>> pour 'MyApp'
>> > ExÚcution arrÛtÚe
>> >
>> > It looks like this package has a loading problem: see the
>> messages for
>> > details.
>> >
>> > It sounds that a package could not be loaded correctly, but I can
>> > not find which one. Is it the latest loaded (xtable) ? How can I
>> > "load it correctly" ?
>> > Thank you.
>> >
>> > Sebastien
>> >
>> >
>> >
>> >
>> > 2009/8/26 Martin Morgan <mtmorgan at fhcrc.org
>> <mailto:mtmorgan at fhcrc.org> <mailto:mtmorgan at fhcrc.org
>> <mailto:mtmorgan at fhcrc.org>>>
>> >
>> > Hi Sébastien --
>> >
>> > Sébastien Laigre wrote:
>> > > Hi Martin,
>> > >
>> > > Thank you for helping me.
>> > > I just tried to create a new R session, but it doesn't
>> work so
>> > much. I
>> > > also tried to load files one by one using your 2 code lines,
>> > but there
>> > > are dependancies problems including files files ar not
>> loaded
>> > in the
>> > > right order.
>> >
>> > it is not too hard to figure out how to load all the
>> packages, e.g.,
>> > following the sequence listed in the 00install.out output,
>> below.
>> >
>> > > In fact, I managed to check & build the package a few time
>> > ago, but it
>> > > doesn't work now. I had the right methodology, but I can't
>> > know what has
>> > > changed (sorry). My methodolgy is :
>> > > 1. Create the package skeleton with package.build(...) in R
>> > console.
>> >
>> > Perhaps it would help to review the manual 'Writing R
>> Extensions' so
>> > that you can get an understanding of what various files are?
>> >
>> > > 2. Fill R documentation files in the man folder in skeleton,
>> > NAMESPACE
>> > > and DESCRIPTION files
>> > > 3. Execute "Rcmd check c:/base/MyApp" with cmd.exe
>> (located in
>> > R/bin folder)
>> > > 4. Execute "Rcmd build c:/base/MyApp" with cmd.exe
>> (located in
>> > R/bin folder)
>> >
>> > Usually you want to do Rcmd build ... and then Rcmd check ....
>> >
>> > Make sure that there are no 'hidden' files (starting with
>> a '.')
>> > in any
>> > of the folders in c:/base/MyApp/.
>> >
>> > I don't really have other suggestions, other than to try to
>> > narrow down
>> > where in your package the error occurs, e.g., by temporarily
>> > renaming
>> > one file after the other in the MyApp/R directory.
>> >
>> > Martin
>> >
>> > > 5. Execute "Rcmd INSTALL MyApp.tar.gz" with cmd.exe (located
>> > in R/bin
>> > > folder)
>> > >
>> > > The error occurs when executing check command, here it
>> is the full
>> > > install00.out :
>> > >
>> > > Le chargement a nécessité le package : tcltk
>> > > Chargement de Tcl/Tk... terminé
>> > > Le chargement a nécessité le package : Hmisc
>> > > Attachement du package : 'Hmisc'
>> > >
>> > > The following object(s) are masked from package:base :
>> > >
>> > > format.pval,
>> > > round.POSIXt,
>> > > trunc.POSIXt,
>> > > units
>> >
>> > > Le chargement a nécessité le package : R2HTML
>> > > Le chargement a nécessité le package : svMisc
>> > >
>> > > *** 'hhc.exe' introuvable : l'aide CHM ne peut être générée
>> > >
>> > > * Installing *source* package 'MyApp' ...
>> > > ** R
>> > > ** preparing package for lazy loading
>> > > Loading required package: grid
>> > > Loading required package: reshape
>> > > Loading required package: plyr
>> > >
>> > > Attaching package: 'plyr'
>> > >
>> > > The following object(s) are masked from package:Hmisc :
>> > >
>> > > is.discrete,
>> > > summarize
>> > >
>> > >
>> > > Attaching package: 'ggplot2'
>> > >
>> > > The following object(s) are masked from package:grid :
>> > >
>> > > nullGrob
>> > >
>> > >
>> > > Attaching package: 'xtable'
>> > >
>> > > The following object(s) are masked from package:Hmisc :
>> > >
>> > > label,
>> > > label<-
>> > >
>> > > Error in match.arg(units) :
>> > > 'arg' should be one of "secs", "mins", "hours", "days"
>> > > Error : unable to load R code in package 'MyApp'
>> > > ERREUR : lazy loading failed pour le package 'MyApp'
>> > > * Removing 'C:/PROGRA~1/R/R-29~1.1/bin/MYAPP~1.RCH/MyApp'
>> > >
>> > >
>> > >
>> > > Thank you again for you help.
>> > >
>> > >
>> > >
>> > > Sébastien
>> > >
>> > >
>> > >
>> > > 2009/8/25 Martin Morgan <mtmorgan at fhcrc.org
>> <mailto:mtmorgan at fhcrc.org>
>> > <mailto:mtmorgan at fhcrc.org <mailto:mtmorgan at fhcrc.org>>
>> <mailto:mtmorgan at fhcrc.org <mailto:mtmorgan at fhcrc.org>
>> > <mailto:mtmorgan at fhcrc.org <mailto:mtmorgan at fhcrc.org>>>>
>> > >
>> > > Sébastien Laigre wrote:
>> > >
>> > > Hello everybody,
>> > >
>> > > I have got several S4 classes for my R application,
>> > and I'm
>> > > trying to create
>> > > a package to deal it easier. It runs on windows XP.
>> > >
>> > > So I make :
>> > >
>> > > - a package.build(........) to build the
>> skeleton of
>> > the package.
>> > > - Rcmd check c:/base/MyApp
>> > >
>> > > But, checking whether package 'MyApp' can be
>> > installed, I have
>> > > the following
>> > > error (in the install.out file) :
>> > > Error in match.arg(units) :
>> > > 'arg' should be one of "secs", "mins", "hours",
>> "days"
>> > >
>> > > I already encountered this kind error, and adding
>> > > "importFrom("package",
>> > > "function") " in the NAMESPACE file solved it.
>> > > But the match.arg function is in the base
>> package and
>> > I can not
>> > > do that.
>> > >
>> > > Can anyone help me please ? Does anybody knows what
>> > can it be
>> > > due to ?
>> > >
>> > >
>> > > Have you tried to start a new R session
>> > >
>> > > R --vanilla
>> > >
>> > > and then source each of the files in the 'R'
>> directory of the
>> > > package, along the lines of
>> > >
>> > > fls = list.files("c:/base/MyApp/R", full=TRUE)
>> > > for (f in fls) { cat(f, "\n"); source(f) }
>> > >
>> > > ? Or can you provide more information about where
>> during the
>> > > installation the error message is generated? Please also
>> > include
>> > > sessionInfo().
>> > >
>> > > Martin
>> > >
>> > >
>> > > Thank you in advance.
>> > >
>> > >
>> > > Sebastien
>> > >
>> > > [[alternative HTML version deleted]]
>> > >
>> > > _______________________________________________
>> > > Bioc-devel at stat.math.ethz.ch
>> <mailto:Bioc-devel at stat.math.ethz.ch>
>> > <mailto:Bioc-devel at stat.math.ethz.ch
>> <mailto:Bioc-devel at stat.math.ethz.ch>>
>> > > <mailto:Bioc-devel at stat.math.ethz.ch
>> <mailto:Bioc-devel at stat.math.ethz.ch>
>> > <mailto:Bioc-devel at stat.math.ethz.ch
>> <mailto:Bioc-devel at stat.math.ethz.ch>>> mailing list
>> > > https://stat.ethz.ch/mailman/listinfo/bioc-devel
>> > >
>> > >
>> > >
>> > > --
>> > > Martin Morgan
>> > > Computational Biology / Fred Hutchinson Cancer
>> Research Center
>> > > 1100 Fairview Ave. N.
>> > > PO Box 19024 Seattle, WA 98109
>> > >
>> > > Location: Arnold Building M1 B861
>> > > Phone: (206) 667-2793
>> > >
>> > >
>> >
>> >
>> >
>>
>>
>>
>
> _______________________________________________
> Bioc-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
More information about the Bioc-devel
mailing list