Null-Division in R
Gibt es einen einfachen Weg, um 0 Fehler " division in R. Insbesondere
a <- c(1,0,2,0)
b <- c(3,2,1,0)
sum(b/a)
Dieser code gibt einen Fehler aufgrund einer division durch null.
Ich möchte einen Weg zu definieren, alles andere/0 = 0, so dass diese Art von Betrieb würde weiterhin gültig sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, lassen Sie uns zurück bis eine minute. R NICHT einen Fehler zurück. Es ist ganz richtig, NaN zurück. Sie hätten besser einen verdammt guten Grund für die Ablehnung der NaN-Werte in Ihre Arbeit. Warum ermöglichen Sie jedem
b
element zu null in der ersten Stelle? Sie müssen darüber nachdenken, was der code eigentlich tun soll, und was es bedeutet (statistisch, sagen), um fröhlich werfen Sie alle den Fällen, in denenb[j]==0
.Was Sie ist, setzen Sie alle Elemente in den Nenner auf 0 zu
NA
und dann ausschließenNA
? in Ihremsum
?Oder ohne änderung
a
:sum(b/ifelse(a==0,NA,a), na.rm = TRUE)
sum(ifelse(a==0, 0, b/a))
abs(c(1,0,2,1e-9))<1e-6
zu vermeiden, ausgeführt in Konflikt mit der Maschine Genauigkeit Fragen.Könnte man ändern die Funktion "/", um eine Ausnahme für die null:
Beispiel:
Dies ist sehr riskant, obwohl zum Beispiel könnte es brechen anderer Leute code. Wenn Sie dies tun wollen, ist es wahrscheinlich eine gute Idee, die Zuweisung unterschiedlicher Betreiber nicht verändert
/
. Auch macht es mathematisch keinen Sinn!Wenn Sie möchten, Maske alle
NaN
undInf
Ergebnisse, versuchen Sie so etwas wie:Oder alle in einer Zeile:
Ich arbeitete nur auf die situation ähnlich.
Dies funktioniert auch mit ifelse():