У меня есть фрагмент кода:
library(tidyr)
library(dplyr)
df_ref <- data.frame(factor_1 = "A", factor_2 = "Y", factor_3 = "3")
factor_1_levels <- c("A", "B", "C")
factor_2_levels <- c("X", "Y", "Z")
factor_3_levels <- c("1", "2", "3")
df_ref_1 <- crossing(select(df_ref, -factor_1), factor_1_levels) %>% rename(factor_1 = factor_1_levels)
df_ref_2 <- crossing(select(df_ref, -factor_2), factor_2_levels) %>% rename(factor_2 = factor_2_levels)
df_ref_3 <- crossing(select(df_ref, -factor_3), factor_3_levels) %>% rename(factor_3 = factor_3_levels)
Вы можете видеть, что у меня определены 3 фактора, и я делаю то же самое с каждым из них. Код делает то, что мне нужно, но это плохой код. В реальных примерах у меня могло бы быть 200 факторов вместо этого, и выполнение вышеупомянутых 200 раз, очевидно, действительно очень плохо. Есть ли хороший способ кодировать это, используя одну из функций типа apply()
или аналогичную?
Спасибо.