As cool and wonderful as the package checking tools for R are, I sometimes am
stymied when trying to track down a problem. For example, I occasionally see
error messages when running R CMD check like the following:
[...]
* checking Rd files ... OK
* checking for undocumented objects ... ERROR
* in parse(file, n, text, prompt) : syntax error on line 932
* in undoc(dir = "/home/a296180/tmp/pyri.port") :
At this point, I want to go look at line 932 of some file. Question 1: Where is
this file? I wonder if this is connected to the tendency of R CMD check to
delete files when it finishes, even when there is an error. Going well beyond
my level of technical competence, I see in the code (lines 600-604)
open Rout, "< $Rout";
while (<Rout>) {chomp; push(@out, $_);}
close Rout;
unlink($Rcmd);
unlink($Rout);
Question 2: Is there some way (other than commenting out all the unlink
commands) to have R CMD check not delete any files? I suspect that this would
make searching for the problem easier in some cases.
Of course, I am given a clue because of the reference to undoc. I can then read
the help page and run undoc from the R prompt:
undoc(dir= "/home/a296180/tmp/pyri.port")
Error in parse(file, n, text, prompt) : syntax error on line 932
Error in undoc(dir = "/home/a296180/tmp/pyri.port") :
cannot source package code
Again, I am sent to line 932, but still don't know what file to look
in. Looking into the undoc code, I see (line 455-458):
if (file.exists(codeDir <- file.path(dir, "R"))) {
codeFile <- tempfile("Rbuild")
on.exit(unlink(codeFile))
codeExts <- c("R", "r", "S", "s", "q")
It seems like the on.exit command is key. The error is in codeFile, but there is
no way to save codeFile, other than commenting out this line. When I do so, I
see, of course, that around line 932 is the following:
reporting <- function(mode,
univ = NULL
...){
which is, indeed, an error (I need a comma after the NULL). However, finding
this error seemed harder than it should be.
Question 3: Am I missing something? Is there some methodology that I should be
following which would have made it much easier to discover the missing comma?
version
_
platform sparc-sun-solaris2.6
arch sparc
os solaris2.6
system sparc, solaris2.6
status
major 1
minor 3.1
year 2001
month 08
day 31
language R
Thanks,
Dave Kane
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
As cool and wonderful as the package checking tools for R are, I
sometimes am stymied when trying to track down a problem. For example,
I occasionally see error messages when running R CMD check like the
following:
[...]
* checking Rd files ... OK
* checking for undocumented objects ... ERROR
* in parse(file, n, text, prompt) : syntax error on line 932
* in undoc(dir = "/home/a296180/tmp/pyri.port") :
...
One can never be defensive enough :-)
In R 1.3.1 I had already wrapped code loading parts of documentation
objects inside try() which gives much nicer error messages (telling you
in which documentation object, i.e. Rd file, the problem occurred).
But of course one should also say that loading the package R code failed
in case it did. Done now in R-devel. Thanks for spotting this.
...
Question 3: Am I missing something? Is there some methodology that I
should be following which would have made it much easier to discover
the missing comma?
Once you know that the problem is in the package R code you can easily
start R and try to load the package: this will tell you where the
problem occurred.
One could maybe have a simple test in R CMD check which verifies that
the package can not only be installed but also loaded. Will think about
this.
Best,
-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._