Это немного мета-вопрос, поскольку он не указывает c на R, но ... Я представляю, что, хотя годы разные, есть некоторые общие части (по форме, даже если нет) во всех деталях) до нескольких лет. Мне бы хотелось иметь список функций (по одной в год), которые вызываются income_tax
, и они, в свою очередь, выполняются на заказ, но могут вызывать обычную функциональность:
year_fns <- list(
`2019/20` = function(x, ...) {
taxable <- post_allowance(x, 11000)
# now some bespoke stuff for this year
if (taxable > 100e3 ){
...
}
....
final_value
},
`2020/21` = #another function
...
)
post_allowance <- function(x, allowance) {
# some common functionality
}
и тогда вы ' Просто рассчитайте подоходный налог с помощью
income_tax <- function(x, year, ...) {
year_fns[[year]](x, ...)
}
. К этому может потребоваться некоторое привыкание, но прелесть R в том, что с функциями так же легко работать, как с числами, строками и c. Итак, мы ищем правильную функцию для вызова в части year_fns[[year]]
, а затем вызываем эту функцию с (x,...)
part