2017-03-13 1 views
0

Ich habe gerade ein seltsames Verhalten von R, die ich gerne verstehen würde.Warum ist NA^0 in R gibt 1 und nicht NA

Wenn ich tun NA^0 gibt es 1 und nicht NA, wie ich es erwartet hätte.

Beispiel:

v1 <- c(2,NA,1) 
v1^0 
[1] 1 1 1 
v1**0 
[1] 1 1 1 

^ und ** sind arithmetische Operatoren (help("^")) wie -, + usw., die in ihrem Fall gibt NA:

v1+0 
[1] 2 NA 1 
v1-0 
[1] 2 NA 1 

Warum die verschiedenen Betreiber performe anders mit NAs?

+6

Ich erinnere mich an meinen Mathematiklehrer sagen *** "Alles auf 0 ist 1". *** –

+1

Dies ist, was es tut. Dieses Ergebnis wurde für eine Reihe von SO-Antworten genutzt, um vektorisierte Lösungen in Gegenwart von NA-Werten zu erzeugen. – lmo

+0

Sie können dies betrachten: http://StackOverflow.com/Questions/17863619/Why-Does-Nan0-1 – PKumar

Antwort

0

Ich habe dies als duplicate zu schließen, aber da Ihre Frage „Wie kann ich vermeiden, dieses Verhalten und das Rück NA statt“ zu sein scheint:

die accepted answer warum NA^0 == 1 sehen
your_exp <- Vectorize(function(base, exp) ifelse(is.na(base),NA,base^exp)) 
v1 <- c(2,NA,1) 

your_exp(v1,0) 
# returns [1] 1 NA 1 

Bitte.

Verwandte Themen