[Rd] log2(quote(1:10)) evaluates the quoted 1:10, log() does not
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun Mar 14 10:28:29 CET 2010
On Fri, 12 Mar 2010, Prof Brian Ripley wrote:
> On Wed, 10 Mar 2010, William Dunlap wrote:
>
>> This is very minor, but shouldn't log2(quote(1:10))
>> throw an error,the same as log() and other math functions
>> do? It looks like log2 and log10 evaluate a call object
>> instead of throwing a non-numeric-argument error. They
>> do object to non-call language objects, like expressions.
>
> Yes, but the reason is complex. log2 and log10 first look for methods for
> themselves, then for log, and the method dispatch code evaluates the argument
> -- so it gets done twice. And because of some of the peculiarities of the
> internal S4 dispatch code, it was hard enough to get to work at all.
>
> The simplest solution seems to be to make log2() and log10() special
> primitives (as log is):
And that does not work, due to S4 dispatch issues in package Rmpfr.
> the alternative is to duplicate a version of the
> logb() code in log2() and log10().
So I have done that.
>> > log2(quote(1:10))
>> [1] 0.000000 1.000000 1.584963 2.000000 2.321928 2.584963
>> [7] 2.807355 3.000000 3.169925 3.321928
>> > log(quote(1:10))
>> Error in log(quote(1:10)) : Non-numeric argument to mathematical
>> function
>> > sqrt(quote(1:10))
>> Error in sqrt(quote(1:10)) :
>> Non-numeric argument to mathematical function
>> > quote(1:10) ^ 2
>> Error in quote(1:10)^2 : non-numeric argument to binary operator
>> > 2 ^ quote(1:10)
>> Error in 2^quote(1:10) : non-numeric argument to binary operator
>>
>> Bill Dunlap
>> Spotfire, TIBCO Software
>> wdunlap tibco.com
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> --
> 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 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
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 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list