2016-04-01 8 views
1

Ich stoße auf ein Problem, wenn ich Gleitkommadaten potenziere. Es scheint, als sollte es eine einfache Lösung sein. Hier ist mein Beispielcode:R-Exponent erzeugt NaN

temp <- c(-0.005220092) 
temp^1.1 

[1] NaN 

-0.005220092^1.1 

[1] -0.003086356 

Gibt es einige offensichtliche Fehler, die ich damit mache? Es scheint, als ob es ein Versehen meinerseits in Bezug auf Exponenten sein könnte.

Danke,

Alex

Antwort

3

Der Grund für die NaN ist, weil das Ergebnis der Potenzierung komplex ist, so dass Sie ein komplexes Argument übergeben haben:

as.complex(temp)^1.1 
[1] -0.002935299-0.000953736i 
# or 
(temp + 0i)^1.1 
[1] -0.002935299-0.000953736i 

Der Grund, dass Ihre Der zweite Ausdruck funktioniert, weil unäre niedrigere Priorität hat als ^, also entspricht dies -(0.005220092^1.1). Siehe ?Syntax.

+0

Vielen Dank! Das macht klar, ich schätze die schnelle Antwort. –

+1

Das erinnert mich an 'fortunes :: fortune (147)'. – RHertel

+0

@RHertel sehr schöner Fang! – Faridcher