2016-05-19 3 views
0

Я пишу функцию R для выполнения этой операции enter image description hereКак написать эффективную функцию с несколькими условиями в R

Я особенно интересно, лучший способ иметь дело с 2-го состояния.
В настоящее время я использую операторы if внутри функции; второе условие рассматривается с использованием вложенного оператора if. Мне интересно, если это лучший (самый быстрый, самый изящный) способ справиться с этим типом математических функций.

#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

При проверке вашего второго состояния вы уже проверили, что оно не соответствует первому состоянию. Вам не нужно другое, если снова проверить это. – Dason

+0

Также вопросы обзора кода, подобные этому, вероятно, должны быть размещены на сайте обзора кода, а не здесь. – Dason

+0

@Dason Я не думаю, что это действительно принадлежит CR, он только спрашивает об одном. Мы бы не отказали ему, но, вероятно, не самый лучший вариант. – Riker

ответ

1

Посмотрите: Case Statement Equivalent in R Существует эта функция cases в пакете memisc Не уверен, быстроты, но, по крайней мере, более удобным для чтения.

+0

Это определенно поможет с удобочитаемостью! Благодаря! –

Смежные вопросы