Я пишу функцию R, что становится довольно большой. Это признает множественный выбор, и я организую это так:
myfun <- function(y, type=c("aa", "bb", "cc", "dd" ... "zz")){
if (type == "aa") {
do something
- a lot of code here -
....
}
if (type == "bb") {
do something
- a lot of code here -
....
}
....
}
У меня есть два вопроса:
Если я пишу подфункцию, это будет выглядеть так:
myfun <- function(y, type=c("aa", "bb", "cc", "dd" ... "zz")){
if (type == "aa") result <- sub_fun_aa(y)
if (type == "bb") result <- sub_fun_bb(y)
if (type == "cc") result <- sub_fun_cc(y)
if (type == "dd") result <- sub_fun_dd(y)
....
}
Подфункция, конечно, определена в другом месте (в верхней части myfun или по-другому).
Я надеюсь, что я был понятен с моим вопросом. Заранее спасибо.
- Дополнительная информация -
Я пишу функцию, которая применяет некоторые различные фильтры на изображение (другой фильтр = другой параметр «тип»). Некоторые фильтры разделяют некоторый код (например, «AA» и «BB» - два гауссовских фильтра, которые отличаются только для одного строки кода), в то время как другие совершенно разные.
Итак, я вынужден использовать много ли, если заявление, то есть.
if(type == "aa" | type == "bb"){
- do something common to aa and bb -
if(type == "aa"){
- do something aa-related -
}
if(type == "bb"){
- do something bb-related -
}
}
if(type == "cc" | type == "dd"){
- do something common to cc and dd -
if(type == "cc"){
- do something cc-related -
}
if(type == "dd"){
- do something dd-related -
}
}
if(type == "zz"){
- do something zz-related -
}
и так далее. Кроме того, есть некоторые, если заявление в коде «сделай что-то». Я ищу лучший способ организовать мой код.