I think what people are also thinking about is that the policy for
publishing a package on CRAN is that it have to pass R CMD check with
no errors, warnings *or* notes.  So, in that sense notes are no
different from warnings.

At least that's why I go about and add some rare ad hoc code patching
in my code.

/Henrik

On Fri, Apr 16, 2010 at 2:09 AM,  <mark.braving...@csiro.au> wrote:
> Speaking as a copious generator of CMD CHECK notes: I don't see that there's 
> a problem to be solved here-- i.e. I don't see why it's worth changing good 
> code or adding conventions just to circumvent CMD CHECK notes. (If the code 
> is bad, of course it should be changed!) As the original poster said, the CMD 
> CHECK note is only a note, not a warning-- it's checking for "*possible* 
> problems". With my packages, especially debug & mvbutils, CHECK issues 100s 
> of lines of "notes", which (after inspection) I don't worry about-- they 
> arise from RCMD CHECK not understanding my code (eg non-default scopings), 
> not from coding errors. I would be very unhappy at having to add enormous 
> amounts of "explanation" to the packages simply to alleviate a non-problem!
>
> Similarly, some compilers give notes about possibly non-initialized variables 
> etc, but these are often a result of the compiler not understanding the code. 
> I do look at them, and decide whether there are problems that need fixing or 
> not-- it's no big deal to ignore them if not useful. Presumably the RCMD 
> CHECK notes are useful to some coders, in which case good; but nothing 
> further really seems needed.
>
> Mark
>
> --
> Mark Bravington
> CSIRO Mathematical & Information Sciences
> Marine Laboratory
> Castray Esplanade
> Hobart 7001
> TAS
>
> ph (+61) 3 6232 5118
> fax (+61) 3 6232 5012
> mob (+61) 438 315 623
>
> l...@stat.uiowa.edu wrote:
>> On Mon, 12 Apr 2010, William Dunlap wrote:
>>
>>>
>>>> -----Original Message-----
>>>> From: r-devel-boun...@r-project.org
>>>> [mailto:r-devel-boun...@r-project.org] On Behalf Of Henrik Bengtsson
>>>> Sent: Monday, April 12, 2010 8:24 AM
>>>> To: Duncan Murdoch
>>>> Cc: r-devel; Michael Dewey
>>>> Subject: Re: [Rd] R CMD check tells me 'no visible binding for
>>>> globalvariable ', what does it mean?
>>>>
>>>> On Mon, Apr 12, 2010 at 5:08 PM, Duncan Murdoch
>>>> <murd...@stats.uwo.ca> wrote:
>>>>> On 12/04/2010 10:51 AM, Michael Dewey wrote:
>>>>>>
>>>>>> When I run R CMD check on a package I have recently started work
>>>>>> on I get the following:
>>>>>>
>>>>>> * checking R code for possible problems ... NOTE
>>>>>> addlinear: no visible binding for global variable 'x'
>>>>>>
>>>>>> I appreciate that this is only a NOTE and so I assume is R's
>>>>>> equivalent of 'This is perfectly legal but I wonder whether it is
>>>>>> really what you intended' but I would like to understand it.
>>>>>>
>>>>>> In the relevant function addlinear the following function is
>>>>>> defined locally:
>>>>>>
>>>>>>    orfun <- function(x, oddsratio) {1/(1+1/(oddsratio *
>>>>>> (x/(1-x))))}
>>>>>>
>>>>>> and then used later in curve
>>>>>>
>>>>>>       curve(orfun(x, exp(estimate)), from = 0.001, to = 0.999,
>>>>>> add = TRUE)
>>>>>>
>>>>>> These are the only occurrences of 'x'.
>>>>>>
>>>>>> Is it just telling me that I have never assigned a value to x? Or
>>>>>> is it more sinister than that? As far as I can tell the function
>>>>>> does what I intended.
>>>>>
>>>>> The curve() function evaluates the first argument in a strange
>>>>> way, and this confuses the code checking.  (The variable name "x"
>>>>> is special to curve().)
>>>>>
>>>>> I think you can avoid the warning by rewriting that call to
>>>>> curve() as
>>>>>
>>>>> curve(function(x) orfun(x, exp(estimate)), from = 0.001, to =
>>>>> 0.999, add = TRUE)
>>>>
>>>> ...or
>>>>
>>>> x <- NULL; rm(x); # Dummy to trick R CMD check curve(orfun(x,
>>>> exp(estimate)), from = 0.001, to = 0.999, add = TRUE)
>>>
>>> Or we could come up with a scheme to telling the usage checking
>>> functions in codetools that some some or all arguments of certain
>>> functions are evaluated in odd ways so it should not check them.
>>>   E.g.,   irregularUsage(curve, expr) irregularUsage(lm, subset,
>>>   formula) # subset and formula arguments of lm
>>> irregularUsage(expression, ...) # ... arguments to expression
>>> Perhaps one could add such indications to the NAMESPACE file or to a
>>> new file in a package.  The former is kludgy but the latter requires
>>> changes to the packaging system.
>>>
>>
>> This is done at the moment in a very ad hoc way for functions in the
>> core packages.  I will make a note to add something for curve.  This
>> is an interesting case, as only the variable 'x' should be viewed as
>> special for code analysis purposes if I understand the intent in
>> curve properly.
>>
>> Providing a mechanism for user functions to be annotated for code
>> analysis might be useful, and might help in making the handling of
>> core package functions with special evaluation rulesa little less ad
>> hloc.  On the other hand I'm not sure I want to do anything that
>> encourages further use of nonstantard evaluation in new code.
>>
>> luke
>>
>>> Bill Dunlap
>>> Spotfire, TIBCO Software
>>> wdunlap tibco.com
>>>
>>>
>>>>
>>>> /Henrik
>>>>
>>>>>
>>>>> Duncan Murdoch
>>>>>
>>>>> ______________________________________________
>>>>> R-devel@r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>>
>>>>
>>>> ______________________________________________
>>>> R-devel@r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>
>>> ______________________________________________
>>> R-devel@r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to