2014-12-03 4 views
2

Таким образом, у меня есть следующий код в R:Странное поведение R

y 
a <- -0.1  
test <- (1/((y+as.numeric(!y))*(a-1))) 
test 
test^a 
-0.9090909^a 

Давать мне выход:

> y 
[1] 0.00000000 0.06024096 0.00000000 0.01098901 0.00000000 0.00000000 
[7] 0.01829268 0.00000000 0.06976744 0.00000000 0.04380665 0.01351351 
[13] 0.00000000 0.00000000 0.00000000 0.00000000 0.00310559 0.00000000 
[19] 0.00000000 0.00000000 0.09957447 0.00000000 0.03738318 0.00000000 
> a <- -0.1 
> test <- (1/((y+as.numeric(!y))*(a-1))) 
> test 
[1] -0.9090909 -15.0909091 -0.9090909 -82.7272727 -0.9090909 
[6] -0.9090909 -49.6969697 -0.9090909 -13.0303030 -0.9090909 
[11] -20.7523511 -67.2727273 -0.9090909 -0.9090909 -0.9090909 
[16] -0.9090909 -292.7272727 -0.9090909 -0.9090909 -0.9090909 
[21] -9.1297591 -0.9090909 -24.3181818 -0.9090909 

> test^a 
[1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
[17] NaN NaN NaN NaN NaN NaN NaN NaN 

> -0.9090909^a 
[1] -1.009577 

Я не понимаю, почему это дает мне NaN, принимая тест на power a, когда понятно, я могу просто скопировать одно значение из теста и поднять его до мощности a, и это работает. Использование теста [1]^a также не работает.

ответ

6

-0.9090909^a такой же, как -(0.9090909^a). Обратите внимание на круглые скобки.

Однако ваш test содержит отрицательные значения, и вы не можете взять корень отрицательного числа. Попробуйте (-0.9090909)^a проверить это:

> (-0.9090909)^-0.1 
[1] NaN 
+4

это [R FAQ 7,33] (http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why -Есть-силы-оф-отрицательных -чисел-wrong_003f) –

2

Вы пытаетесь взять корень из отрицательного числа. Если вы хотите сделать сложную арифметику вам необходимо преобразовать в сложной

as.complex(test)^a 
# [1] 0.9601644-0.3119763i 0.7249946-0.2355650i 0.9601644-0.3119763i 
# [4] 0.6115633-0.1987090i 0.9601644-0.3119763i 0.9601644-0.3119763i 
# [7] 0.6435367-0.2090978i 0.9601644-0.3119763i 0.7357171-0.2390490i 
#[10] 0.9601644-0.3119763i 0.7022627-0.2281790i 0.6243418-0.2028609i 
#[13] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.9601644-0.3119763i 
#[16] 0.9601644-0.3119763i 0.5389643-0.1751201i 0.9601644-0.3119763i 
#[19] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.7623605-0.2477059i 
#[22] 0.9601644-0.3119763i 0.6912151-0.2245894i 0.9601644-0.3119763i 
Смежные вопросы