Это мои данные:
# Test datasets
test_df <- data.frame(A =c(1, 2, 3, 3, 4), AKH_UL =c(111, 222, 333, 444, 555), AKH_LL = c(222, 333, 444, 555, 666),
AKH_UU = c(213, 242, 253, 546, 243), AKH_LU = c(453, 855, 784, 352, 585), FFL_UL =c(111, 222, 333, 444, 555), FFL_LL = c(222, 333, 444, 555, 666), FFL_UU = c(213, 242, 253, 546, 243), FFL_LU = c(453, 855, 784, 352, 585))
Я хочу создать два столбца, AKH
и FFL
. Значение столбца зависит от условий, и каждое условие связано с определенной функцией:
Simplified functions:
# Case 1:
myfunction1 <- function(cost, cost_LL, cost_UL, cost_LU, cost_UU){
test_df$cost <- cost_LL *cost_UL + cost_UU * cost_LU
}
# Case 2:
myfunction2 <-function(cost,cost_LL, cost_LU){
test_df$cost <- cost_LL *cost_LU
}
# Case 3:
myfunction3 <-function(cost,cost_UL, cost_UU){
test_df$cost <- costUL *costUU
}
Сейчас я делаю это в два отдельных этапа для каждого столбца. Например, для AKH:
test_df$AKH <-
ifelse(test_df$A == 1,
myfunction1(test_df$AKH, test_df$AKH_LL, test_df$AKH_UL, test_df$AKH_LU, test_df$AKH_UU),
ifelse((test_df$A == 2,
myfunction2(test_df$AKH, test_df$AKH_LL, test_df$AKH_LU),
ifelse((test_df$A == 3,
myfunction3(test_df$AKH, test_df$AKH_UL, test_df$AKH_UU),
99999))))
То же самое вычисление, которое я делаю для второго члена, только с FFL вместо AKH внутри формул.
Это выглядит довольно ужасно (в rl это не только два, но и 10 столбцов), и я боюсь, что другие дети будут смеяться надо мной, когда увидят мой сценарий.
Я проверил этот вопрос, но не смог полностью перенести его в мою проблему, потому что я понятия не имею, как установить связь между именем переменной в формуле и именем столбца.