[R] getting informative error messages

Tony Plate tplate at acm.org
Fri May 11 19:12:52 CEST 2007


Prof Brian Ripley wrote:
> It is not clear to me what you want here.

I just wanted to be able to quickly find the expression in which an 
error occurred when it was inside a lengthy function.  I now know that 
'debug()' can help with this (debug() allows me to easily step through 
the function and see where the error occurs.)

> Errors are tagged by a 'call', and f(1:3) is the innermost 'call' (special 
> primitives do not set a context and so do not count if you consider '[' 
> to be a function).

Thanks for the explanation.  I suspected that it had something to do 
with primitive functions, but was unable to confirm that by searching.

> 
> The message could tell you what the type was, but it does not and we have 
> lost the pool of active contributors we once had to submit tested patches 
> for things like that.

What is required to test patches for things like this?  Is there 
anything written up on that anywhere?  I've not been able to clearly 
discern what the desired output of 'make check' is -- there seem to be 
reported differences that don't actually matter, but I didn't see a fast 
and easy way of distinguishing those from the ones that do matter.  I 
did look in R-exts, and on developer.r-project.org but was unable to 
find clear guidance there either.

-- Tony Plate
> 
> 
> On Mon, 7 May 2007, Tony Plate wrote:
> 
>> Certain errors seem to generate messages that are less informative than
>> most -- they just tell you which function an error happened in, but
>> don't indicate which line or expression the error occurred in.
>>
>> Here's a toy example:
>>
>>> f <- function(x) {a <- 1; y <- x[list(1:3)]; b <- 2; return(y)}
>>> options(error=NULL)
>>> f(1:3)
>> Error in f(1:3) : invalid subscript type
>>> traceback()
>> 1: f(1:3)
>> In this function, it's clear that the error is in subscripting 'x', but
>> it's not always so immediately obvious in lengthier functions.
>>
>> Is there anything I can do to get a more informative error message in
>> this type of situation?  I couldn't find any help in the section
>> "Debugging R Code" in "R-exts" (or anything at all relevant in "R-intro").
>>
>> (Different values for options(error=...) and different formatting of the
>> function made no difference.)
>>
>> -- Tony Plate
>>
>>> sessionInfo()
>> R version 2.5.0 (2007-04-23)
>> i386-pc-mingw32
>>
>> locale:
>> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>> States.1252;LC_MONETARY=English_United
>> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>>
>> attached base packages:
>> [1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"
>> [7] "base"
>>
>> other attached packages:
>> tap.misc
>>    "1.0"
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> 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.
>>
>



More information about the R-help mailing list