Ifelse в функции, возвращающей NaN для отрицательных чисел

#r

#r

Вопрос:

Я не понимаю, почему эта функция возвращает NaN для отрицательных значений x.

 lambda lt;- 2.77  alpha lt;- 0.88   # function   util lt;- function( x, a, l){    ifelse(x gt;=0, x^a, l * (x^a) )   }   

для x я вставляю число из фрейма данных. Если число положительное, я получаю правильный результат. Однако, если он отрицательный, он возвращает NaN

  gt; util(-0.5,alpha,lambda) [1] NaN   

Может ли кто-нибудь объяснить, почему или предложить решение?

Комментарии:

1. Корни отрицательных чисел сложны.

Ответ №1:

Вы можете попробовать это

 util lt;- function(x, a, l) {  ifelse(x gt;= 0, x^a, l * (as.complex(x)^a)) }  

и вы увидите

 gt; util(-0.5, alpha, lambda) [1] -1.399432 0.554074i