2016-05-19 18 views
0

Ich schreibe eine R-Funktion schreiben, um diese Operation auszuführen enter image description hereWie eine effiziente Funktion mit mehreren Bedingungen in R

ich besonders frage mich die beste Art und Weise mit der zweiten Bedingung zu behandeln.
Ich verwende derzeit if Anweisungen innerhalb einer Funktion; Die zweite Bedingung wird mit einer verschachtelten if-Anweisung behandelt. Ich bin gespannt, ob dies der beste (schnellste, eleganteste) Weg ist, um mit dieser Art von mathematischen Funktionen umzugehen.

#Parameters 
K.bc <- 10;K.bk<-100 
W2.fg <- W2.fp <- 1000 


#Function 
F.2.sink <- function(K.bc, K.bk, W2.fg,W2.fp){ 
    if(W2.fg + W2.fg < K.bc) 
    {return(0)} 

    if(K.bc < (W2.fg + W2.fg)) 
    if(W2.fg + W2.fg < (K.bc+K.bk)) 
     {return(W2.fg + W2.fp - K.bc)} 

    if(W2.fg + W2.fp >= (K.bc+K.bk)) 
    {return(K.bk)} 
} 

F.2.sink(K.bc,K.bk,W2.fg,W2.fp) 
+0

Beim Überprüfen Ihrer zweiten Bedingung haben Sie bereits überprüft, ob die erste Bedingung erfüllt wurde. Sie brauchen kein anderes, wenn Sie das Gleiche noch einmal überprüfen möchten. – Dason

+0

Auch Code-Review-Fragen wie diese sollten wahrscheinlich auf der Code-Review-Seite veröffentlicht werden und nicht hier. – Dason

+0

@Dason Ich glaube nicht, dass das wirklich auf CR gehört, er fragt nur nach einer Sache. Wir würden ihn nicht ablehnen, aber wahrscheinlich nicht die beste Option. – Riker

Antwort

1

Werfen Sie einen Blick auf: Case Statement Equivalent in R Es ist diese Funktion cases in Paket memisc Nicht sicher Echtheit, aber zumindest besser lesbar.

+0

Dies wird definitiv mit der Lesbarkeit helfen! Vielen Dank! –

Verwandte Themen