In der Funktion Quelle für stats::bw.nrd0
gibt es eine komplizierte (für mich) if
Aussage:Wie interpretiere Doppel "oder" || und Zuordnung, wenn Klausel
> bw.nrd0
function (x)
{
if (length(x) < 2L)
stop("need at least 2 data points")
hi <- sd(x)
if (!(lo <- min(hi, IQR(x)/1.34)))
(lo <- hi) || (lo <- abs(x[1L])) || (lo <- 1)
0.9 * lo * length(x)^(-0.2)
}
<bytecode: 0x0000000010c688b0>
<environment: namespace:stats>
Ist ||
in besonderer Weise interpretiert zu werden, im Vergleich zu dem regulären Operator |
? Wo/wie wird lo
zugewiesen/neu zugewiesen? Wie wäre das in "langer Form" geschrieben?
Volle Offenlegung, habe ich versucht, diese Funktion in eine Python-Funktion in this answer zu übersetzen, also wenn Sie dies beantworten können, können Sie auch eine bessere Antwort auf diese Frage hinzufügen.
Wenn logische ODER wird in Zuordnung verwendet, bedeutet typischerweise „, wenn diese erste truthy ist, weisen Sie auf die Variable, sonst weise die zweite Sache zu und es bedeutet wahrscheinlich "wenn hi truthig ist, weise es zu, sonst weise abs (x [1L]) zu." Disclaimer: Ich weiß nicht r. – Carcigenicate
Wenn das richtig ist, kann Python folgendes tun: 'x = falsyVal oder truthyVal' – Carcigenicate
' "||" 'ist eine Art Kurzschlussvergleich (zB' TRUE || stop ("erreicht") 'VS' TRUE | stop ("erreicht") ') Der Fall 'lo' wird neu zugewiesen, bis sein Wert _firstly_, evaluiert wird ates zu 'WAHR'. Z.B. '(x <- 1) || (x <- 2) || (x <-1); x; (x <- 0) || (x <- 2) || (x <-1); x 'etc –