Результат умножения NaN, когда отрицательное число содержится в векторе

У меня возникла проблема с вычислением результата при переводе вектора в десятичную степень. Проблема заключается в том, что отрицательные числа в векторе возвращаются как NAN. Это также происходит, если я присваиваю отрицательное число переменной. Несколько примеров для пояснения:

> -5.718301^2.85
[1] -143.9498

> test<--5.718301
> test
[1] -5.718301
> test^2.85
[1] NaN

> c(5.718301)^2.85
[1] 143.9498
> c(-5.718301)^2.85
[1] NaN

Может ли кто-нибудь объяснить мне, почему это происходит? И как-нибудь обойти это? Рассматриваемый вектор может иметь положительные и отрицательные значения, поэтому после него я не могу присвоить отрицательный знак.

Заранее спасибо, Аран


r nan
person Aran Brady    schedule 20.01.2012    source источник
comment
Это в FAQ: cran.r-project.org/doc/FAQ/   -  person IRTFM    schedule 20.01.2012


Ответы (1)


Реального решения для (-5.718301)^2.85 не существует, поэтому NaN является правильным ответом.

> (-5.718301)^2.85
[1] NaN

То, что вы здесь пытаетесь сродни запросу квадратного корня из отрицательного числа.

Когда вы успешно оценили

-5.718301^2.85

приоритет операторов означал, что это было эквивалентно

-(5.718301^2.85)

и, конечно, это четко определено.

person David Heffernan    schedule 20.01.2012
comment
Хорошее объяснение, +1. Обратите внимание, что вы можете оценить as.complex(-5.718301)^2.85, что дает -128.2602+65.3518i - person James; 20.01.2012