[R] ^ operator

David Winsemius dwinsemius at comcast.net
Mon Nov 16 13:43:35 CET 2009


R does not "know" that 1/3 is 1/3. It is represented internally as  
0.33333...3, so certain mathematical facts such as the existence of  
real roots of fractional integer powers are opaque to R  (since it is  
not a symbolic algebra system.)

Try seaarching for cube roots on R-search (for example):

http://finzi.psych.upenn.edu/Rhelp08/2009-July/205006.html  # Further  
comments by Ted Harding

 > complex(real=-6.108576e-05)^(1/3)
[1] 0.01969171+0.03410703i'

So the safest way to get the real cube root (as opposed the complex  
roots) is to use:

sign(tmp)*abs(tmp)^1/3

 > sign(tmp)*abs(tmp)^(1/3)
[1] -0.03938341  0.03478442  0.03285672  0.08950802 -0.11696726

On Nov 16, 2009, at 5:24 AM, carol white wrote:

> Hi,
> I want to apply ^ operator to a vector but it is applied to some of  
> the elements correctly and to some others, it generates NaN. Why is  
> it not able to calculate -6.108576e-05^(1/3) even though it exists?
>
>
> tmp
> [1] -6.108576e-05  4.208762e-05  3.547092e-05  7.171101e-04  
> -1.600269e-03
>> tmp^(1/3)
> [1]        NaN 0.03478442 0.03285672 0.08950802        NaN
>> -6.108576e-05^(1/3)
> [1] -0.03938341
>
-- 

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list