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

У меня возникла проблема с вычислением результата при переводе вектора в степень десятичной дроби. Более конкретно, проблема в том, что отрицательные числа в векторе возвращаются как 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

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

Спасибо заранее, Аран

1 Ответ

4 голосов
/ 20 января 2012

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

> (-5.718301)^2.85
[1] NaN

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

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

-5.718301^2.85

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

-(5.718301^2.85)

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

...