[R-pkg-devel] Warning that are Unintentionally OS-Specific (Maybe Bug in warning?)

MTurgeon maxime.turgeon at mail.mcgill.ca
Wed Jul 20 21:22:37 CEST 2016


Hi Bill,

This is just a hypothesis, but it could have something to do with the 
fact that you're using parallel::mclapply inside your function pk.nca? 
This would certainly explain why you have different behaviours on 
Windows and Unix systems. It would also explain why you get a different 
behaviour between options(warn=0) and options(warn=1), since the master 
receives the exceptions at different times in both cases.

Max

On 16-07-20 01:13 PM, Bill Denney wrote:
> Hi François,
>
> I thought that was the issue, too, but I confirmed it wasn't that by 
> adding a print statement right above the warning in my code. The print 
> statement displays the message even when the warning (one line below 
> with no conditionals between) doesn't show anything.
>
> Also, why would it behave differently when options(warn=1) is set 
> rather than the default of options(warn=0)?
>
> Thanks,
>
> Bill
>
>
> On 7/20/2016 3:06 PM, François Michonneau wrote:
>> Hi Bill,
>>
>>    The problem is not with the warning() function but with your if()
>> test that triggers the warning. It probably has something to do with
>> slight differences in rounding. I suggest you use debug() or browser()
>> on each platform to see why your condition is TRUE or FALSE.
>>
>>    Cheers,
>>    -- François
>>
>> On Wed, Jul 20, 2016 at 2:42 PM, Bill Denney <bill at denney.ws> wrote:
>>> Hi,
>>>
>>> I'm developing the PKNCA package, and I've got an odd difference 
>>> between
>>> warning behavior on different operating systems that I can't figure 
>>> out.
>>>
>>> When I run the following code on Windows 10 (with R 3.3.0), I get the
>>> following warning:
>>>
>>> library(PKNCA)
>>> source("https://raw.githubusercontent.com/billdenney/pknca/master/tests/testthat/generate.data.R") 
>>>
>>> tmpconc <- generate.conc(2, 1, 0:24)
>>> tmpconc$conc <- 0
>>> tmpdose <- generate.dose(tmpconc)
>>> myconc <- PKNCAconc(tmpconc, conc~time|treatment+ID)
>>> mydose <- PKNCAdose(tmpdose, dose~time|treatment+ID)
>>> mydata <- PKNCAdata(myconc, mydose)
>>> myresult <- pk.nca(mydata)
>>>
>>> Warning messages:
>>> 1: In pk.calc.half.life(conc = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  :
>>>    Too few points for half-life calculation (min.hl.points=3 with 
>>> only 0
>>> points)
>>> 2: In pk.calc.half.life(conc = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  :
>>>    Too few points for half-life calculation (min.hl.points=3 with 
>>> only 0
>>> points)
>>>
>>> When I run the code on Linux (Ubuntu 16.04 with R 3.3.1), I do not 
>>> get a
>>> warning.  When I run the code on Linux after "options(warn=1)", I 
>>> get the
>>> warning.  I have confirmed that the same code path is taken in both 
>>> Windows
>>> and Linux by simply inserting a print statement next to the 
>>> warning.  The
>>> actual warning code is:
>>>
>>>      warning(sprintf(
>>>        "Too few points for half-life calculation (min.hl.points=%g 
>>> with only
>>> %g points)",
>>>        min.hl.points, nrow(dfK)))
>>>
>>> This platform inconsistency is causing issues with my package 
>>> because the
>>> package expects the warnings, and the user should know about the 
>>> warnings.
>>> I've got test cases expecting the warnings, and they fail everywhere 
>>> but
>>> Windows 
>>> (https://cran.r-project.org/web/checks/check_results_PKNCA.html).
>>>
>>> Does anyone have an idea why warnings may behave differently on Windows
>>> compared to non-Windows platforms?  Is this a bug in R somewhere?  
>>> (I've not
>>> been able to make a simpler example that triggers the issue, 
>>> unfortunately.)
>>>
>>> Thanks,
>>>
>>> Bill
>>>
>>> ______________________________________________
>>> R-package-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
> ______________________________________________
> R-package-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
-----------------------------------------------------------------

Maxime Turgeon, PhD candidate

Department of Epidemiology, Biostatistics and Occupational Health
McGill University



More information about the R-package-devel mailing list