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

______________________________________________
R-help@r-project.org 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.

Reply via email to