[R] R package-building
Roger Bivand
Roger.Bivand at nhh.no
Thu Jan 10 20:17:23 CET 2002
On Thu, 10 Jan 2002, Tim Hoar wrote:
One problem that I've had several times, but resolved was trying to use
functions first made available in a package being checked in the *.R files
sourced by data(). The solution there has been to do as you seem to be
doing, and save the objects to be loaded as an ascii *.rda file, and
load() this file in the data/*.R file. I have a slight feeling that
data() might be happier without the file extensions (.txt, .Rdata), but
now I usually write a *.R in the data directory to make life easier.
>From some further rounds with check, which is actually a great help
despite what I've sometimes felt (it is encapsulated experience), you
could look carefully at the directory created while running R CMD check.
In running R CMD check mypkg, the procedure generates a check directory at
the same level as mypkg, called mypkg.Rcheck. In this will be the output
of running the examples (if it gets that far - tail on mypkg-Ex.Rout is
often very helpful) but more importantly the local directory with the
compiled package in it, exactly as the package would be installed. I
sometimes then find it easier to see what check doesn't like when running
the examples.
Roger
> Sorry to all those who responded, but I am not getting my point across.
> I have read the "Writing R Extensions" document and DO have the
> suggested directory structure, and I have the data files in the
> data directory. One data file is really an .RData file, one _cannot_ be.
> I am even having trouble with the .RData data file.
>
> Most of the confusion is that people are giving me suggestions that
> work when the package is already installed and R knows about the
> package PATH (for lack of a better concept). My problem is that
> during the "check" sequence, the existing R PATH does _not_ contain
> the data to be data()'d or load()'d, EVEN THOUGH the data IS
> IN the <package>/data directory (or so it seems to me).
>
>
>
> to wit (from within R):
>
> > system("pwd")
> /home/thoar/R
> > system("ls -l")
> total 10
> drwxr-xr-x 5 thoar cgdcas 512 Jan 9 16:44 RadioSonde
> > system("ls -lR RadioSonde")
> RadioSonde:
> total 10
> -rw-r--r-- 1 thoar cgdcas 750 Jan 9 16:32 DESCRIPTION
> -rw-r--r-- 1 thoar cgdcas 758 Jan 9 16:44 INDEX
> drwxr-xr-x 2 thoar cgdcas 512 Jan 9 14:20 R
> drwxr-xr-x 2 thoar cgdcas 512 Jan 9 16:44 data
> drwxr-xr-x 2 thoar cgdcas 512 Jan 4 16:43 man
>
> RadioSonde/R:
> total 106
> -rw-r--r-- 1 thoar cgdcas 2433 Jan 9 11:54 getsonde.R
> -rw-r--r-- 1 thoar cgdcas 701 Jan 9 14:13 plot.wind.R
> -rw-r--r-- 1 thoar cgdcas 2115 Jan 9 14:10 plotsonde.R
> -rw-r--r-- 1 thoar cgdcas 439 Jan 4 16:43 satlft.R
> -rw-r--r-- 1 thoar cgdcas 11171 Jan 9 14:17 skewt.axis.R
> -rw-r--r-- 1 thoar cgdcas 21188 Jan 4 16:43 skewt.data.R
> -rw-r--r-- 1 thoar cgdcas 146 Jan 4 16:43 skewt.lines.R
> -rw-r--r-- 1 thoar cgdcas 116 Jan 4 16:43 skewt.points.R
> -rw-r--r-- 1 thoar cgdcas 251 Jan 4 16:43 skewtx.R
> -rw-r--r-- 1 thoar cgdcas 212 Jan 4 16:43 skewty.R
> -rw-r--r-- 1 thoar cgdcas 4346 Jan 9 10:40 station.symbol.R
> -rw-r--r-- 1 thoar cgdcas 3977 Jan 4 16:43 wobf.R
>
> RadioSonde/data:
> total 256
> -rw-r--r-- 1 thoar cgdcas 179 Jan 9 16:44 00Index
> -rw-r--r-- 1 thoar cgdcas 63216 Jan 4 16:43 ExampleSonde.txt
> -rw-r--r-- 1 thoar cgdcas 65718 Jan 9 13:19 sample.sonde.RData
>
> RadioSonde/man:
> total 58
> -rw-r--r-- 1 thoar cgdcas 5222 Jan 10 09:05 ExampleSonde.Rd
> -rw-r--r-- 1 thoar cgdcas 372 Jan 9 12:29 RadioSonde-internal.Rd
> -rw-r--r-- 1 thoar cgdcas 4294 Jan 10 09:05 getsonde.Rd
> -rw-r--r-- 1 thoar cgdcas 1775 Jan 10 09:03 plot.wind.Rd
> -rw-r--r-- 1 thoar cgdcas 2710 Jan 10 09:06 plotsonde.Rd
> -rw-r--r-- 1 thoar cgdcas 2383 Jan 9 15:33 sample.sonde.Rd
> -rw-r--r-- 1 thoar cgdcas 2680 Jan 10 09:06 skewt.axis.Rd
> -rw-r--r-- 1 thoar cgdcas 1175 Jan 10 09:24 skewt.lines.Rd
> -rw-r--r-- 1 thoar cgdcas 1157 Jan 10 09:24 skewt.points.Rd
> -rw-r--r-- 1 thoar cgdcas 1873 Jan 10 09:24 station.symbol.Rd
> > data("ExampleSonde.txt")
> Warning message:
> Data set `ExampleSonde.txt' not found in: data("ExampleSonde.txt")
> > data("sample.sonde.RData")
> Warning message:
> Data set `sample.sonde.RData' not found in: data("sample.sonde.RData")
>
>
> # PLEASE NOTE: There exists no "RadioSonde" package at this point! All
> # the pieces are there, but thats about it.
> # sample.sonde.Rdata was created by save(<yadda>,<yadda>,ascii=TRUE)
> # When I use a different LOAD:
>
> > load("RadioSonde/data/sample.sonde.RData")
> >
>
> # R does EXACTLY as expected! However, this is clearly not an appropriate
> # example once the package is installed!
>
>
> # I have commented out all my examples save one:
>
> \examples{
> load("sample.sonde.RData")
> }
>
> When I try to "check" it, it bombs:
>
> 0[230]2 sunray2:~/R > R CMD check RadioSonde
> * checking for working latex ... OK
> * using log directory `/home/thoar/R/RadioSonde.Rcheck'
>
> Installing source package `RadioSonde' ...
> R
> data
> help
> >>> Building/Updating help pages for package `RadioSonde'
> Formats: text html latex example
> ExampleSonde text html latex example
> RadioSonde-internal text html latex
> getsonde text html latex example
> plot.wind text html latex example
> plotsonde text html latex example
> sample.sonde text html latex
> skewt.axis text html latex example
> skewt.lines text html latex example
> skewt.points text html latex example
> station.symbol text html latex example
> DONE (RadioSonde)
>
> DONE (INSTALL)
>
> * checking for file `RadioSonde/DESCRIPTION' ... OK
> * checking package directory ... OK
> * checking for sufficient file permissions ... OK
> * checking DESCRIPTION Package field ... OK
> * checking DESCRIPTION Version field ... OK
> * checking DESCRIPTION License field ... OK
> * checking DESCRIPTION Description field ... OK
> * checking DESCRIPTION Title field ... OK
> * checking DESCRIPTION Author field ... OK
> * checking DESCRIPTION Maintainer field ... OK
> * checking R files for library.dynam ... OK
> * checking Rd files ... OK
> * checking for undocumented objects ... OK
> * checking for code/documentation mismatches ... OK
> * creating RadioSonde-Ex.R ... OK
> * checking examples ... ERROR
> * running examples failed
> 1[231]2 sunray2:~/R >
>
> I don't see how, BEFORE THE PACKAGE IS BUILT, the "data", "load", or any
> other command should know to search for any "data" directories in all
> directories in the current working directory. Naturally, once the package
> is installed, this is not a problem. At the CHECK stage, however, there
> is no .lib.loc information available for a package that does not exist.
>
> What am I not understanding about the PATH strategy for R?
> Perhaps I am not building/checking the package in the intended fashion?
>
> I can send a TAR file of the package (~54kb) to any interested parties.
>
> Sincerely, and I appreciate the help -- Tim
>
> P.S. The intended [real world] data files are the result of a data
> collection mechanism beyond my control and contain an aggregation of
> metadata in a header and a subsequent table. They have an unknown
> number of lines of "text", a unique line of text, what amounts to
> the col.names, a garbage line of text, and then the table of data.
> Seems to me the .txt extension is the best descriptor for this.
> All my getsonde() function does is scan() the file in as a series
> of lines, parse the lines and decodes the number of lines to skip
> for read.table(). Along the way I grab the col.names and convert
> to lower case, and the presence of the garbage line in-between
> the col.names and the data prevents a straightforward call to
> read.table.
>
> Some of my examples SHOULD show how to read a real radiosonde
> datafile, not a preprocessed R dataset. So, I really need to
> have sample.sonde <- getsonde("ExampleSonde.txt") as
> a valid example. Simply getting data("contrived") to
> work is insufficient, I think.
>
>
> <The rest of this is in response to Brian Ripley's reply>
>
> > Use data(). Have a file ExampleSonde.R in RadioSonde/data that does
> > whatever is necessary to read ExampleSonde.txt. Then
> > data(ExampleSonde) will work, from anywhere.
> >
> > I think ExampleSonde.R could just contain
> >
> > ExampleSonde <- getsonde("ExampleSonde.txt")
> >
> > BTW, assuming ExampleSonde.txt is really data, I suggect you don't give it
> > a .txt extension. data() allows that for rectangular arrays of data.
> >
> > See ?data for more details.
> >
> > --
> > Brian D. Ripley, ripley at stats.ox.ac.uk
> > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> > University of Oxford, Tel: +44 1865 272861 (self)
> > 1 South Parks Road, +44 1865 272860 (secr)
> > Oxford OX1 3TG, UK Fax: +44 1865 272595
>
>
> Hunh? RadioSonde/R/getsonde.R is the function that reads in
> RadioSonde/data/ExampleSonde.txt. Are you telling me to
> copy/move RadioSonde/R/getsonde.R to
> RadioSonde/data/ExampleSonde.R ?
>
> I'm sorry, but I really don't understand.
>
> Tim
>
> ## Tim Hoar, Associate Scientist email: thoar at ucar.edu ##
> ## Geophysical Statistics Project phone: 303-497-1708 ##
> ## National Center for Atmospheric Research FAX : 303-497-1333 ##
> ## Boulder, CO 80307 http://www.cgd.ucar.edu/~thoar ##
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no
and: Department of Geography and Regional Development, University of
Gdansk, al. Mar. J. Pilsudskiego 46, PL-81 378 Gdynia, Poland.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list