Перезагружайте параметры функции вместо записи каждый раз - PullRequest
1 голос
/ 14 января 2020

У меня есть пользовательская функция fit_xgb, которая принимает несколько параметров:

fit_xgb(train_df = training_data, 
                          test_df = testing_data, 
                          training_features = c("spender", "spend_7d", "spend_30d", "d7_utility_sum", "recent_utility_ratio", "IOS",
                                                "is_publisher_organic", "is_publisher_facebook"), 
                          hyper_param = hyperparam_value, 
                          binary_target = "spender",
                          regression_target = paste0("spend_", day_m, "d"),
                          spend_from = paste0("spend_", day_n, "d"),
                          spend_to = paste0("spend_", day_m, "d"))

У меня есть другая пользовательская функция fit_rf, которая принимает те же параметры:

fit_rf(train_df = training_data, 
                          test_df = testing_data, 
                          training_features = c("spender", "spend_7d", "spend_30d", "d7_utility_sum", "recent_utility_ratio", "IOS",
                                                "is_publisher_organic", "is_publisher_facebook"), 
                          hyper_param = hyperparam_value, 
                          binary_target = "spender",
                          regression_target = paste0("spend_", day_m, "d"),
                          spend_from = paste0("spend_", day_n, "d"),
                          spend_to = paste0("spend_", day_m, "d"))

Вместо объясните параметры каждый раз, когда я вызываю любую из этих двух функций, я хотел бы создать одну переменную, которую я могу вызвать один раз:

model_function_params <- list(
  train_df = training_data, 
  test_df = testing_data, 
  training_features = c("spender", "spend_7d", "spend_30d", "d7_utility_sum", "recent_utility_ratio", "IOS",
                        "is_publisher_organic", "is_publisher_facebook"), 
  hyper_param = hyperparam_value, 
  binary_target = "spender",
  regression_target = paste0("spend_", day_m, "d"),
  spend_from = paste0("spend_", day_n, "d"),
  spend_to = paste0("spend_", day_m, "d"))

fit_rf(model_function_params)
fit_xgb(model_function_params)

Это не работает. Я знаю, что мне нужно было бы указать каждый компонент списка с помощью

training_data = model_function_params$train_df
test_df = model_function_params$test_df
etc

Но это почти сводит на нет цель написания меньшего количества кода и сохранения минимума в моем сценарии.

Есть ли элегантный способ определить параметры функции один раз, а затем перейти к fit_rf или fit_xgb без необходимости дважды указывать параметры в моем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...