1library(testthat) 2library(tibble) 3library(modeldata) 4data(biomass) 5 6biomass_tr <- biomass[biomass$dataset == "Training",] 7biomass_te <- biomass[biomass$dataset == "Testing",] 8 9test_that('basic steps', { 10 rec_1 <- 11 recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur, 12 data = biomass_tr) %>% 13 step_mutate(hydrogen = hydrogen/2) %>% 14 step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>% 15 step_corr(all_predictors(), threshold = .6) %>% 16 prep() 17 18 cols_1 <- c("hydrogen", "nitrogen", "sulfur", "HHV", "oxygen_o_carbon") 19 20 expect_equal( 21 names(juice(rec_1)), 22 cols_1 23 ) 24 expect_equal( 25 names(bake(rec_1, biomass_te)), 26 cols_1 27 ) 28 29 expect_equal( 30 names(juice(rec_1, all_predictors())), 31 cols_1[cols_1 != "HHV"] 32 ) 33 expect_equal( 34 names(bake(rec_1, biomass_te, all_predictors())), 35 cols_1[cols_1 != "HHV"] 36 ) 37}) 38 39 40test_that('skipped steps', { 41 rec_2 <- 42 recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur, 43 data = biomass_tr) %>% 44 step_mutate(hydrogen = hydrogen/2) %>% 45 step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>% 46 step_corr(all_predictors(), threshold = .6, skip = TRUE) %>% 47 prep() 48 49 cols_1 <- c( 50 "hydrogen", 51 "nitrogen", 52 "sulfur", 53 "HHV", 54 "oxygen_o_carbon" 55 ) 56 57 # Ordering relative to the original specification of the recipe is 58 # preserved (i.e. carbon was the first column specified, and since we 59 # skipped the step that would drop it, it appears first in the result) 60 cols_2 <- c( 61 "carbon", 62 "hydrogen", 63 "oxygen", 64 "nitrogen", 65 "sulfur", 66 "HHV", 67 "hydrogen_o_carbon", 68 "oxygen_o_carbon", 69 "nitrogen_o_carbon" 70 ) 71 72 expect_equal( 73 names(juice(rec_2)), 74 cols_1 75 ) 76 expect_equal( 77 names(bake(rec_2, biomass_te)), 78 cols_2 79 ) 80 81 expect_equal( 82 names(juice(rec_2, all_predictors())), 83 cols_1[cols_1 != "HHV"] 84 ) 85 expect_equal( 86 names(bake(rec_2, biomass_te, all_predictors())), 87 cols_2[cols_2 != "HHV"] 88 ) 89}) 90 91 92test_that('remove and add a column', { 93 rec_3 <- 94 recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur, 95 data = biomass_tr) %>% 96 step_rm(HHV) %>% 97 step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>% 98 step_corr(all_predictors(), threshold = .6) %>% 99 step_mutate(HHV = 17) %>% 100 prep() 101 102 cols_3 <- c("hydrogen", "nitrogen", "sulfur", "oxygen_o_carbon", "HHV") 103 104 expect_equal( 105 names(juice(rec_3)), 106 cols_3 107 ) 108 expect_equal( 109 names(bake(rec_3, biomass_te)), 110 cols_3 111 ) 112 113 expect_equal( 114 names(juice(rec_3, all_predictors())), 115 cols_3[cols_3 != "HHV"] 116 ) 117 expect_equal( 118 names(bake(rec_3, biomass_te, all_predictors())), 119 cols_3[cols_3 != "HHV"] 120 ) 121}) 122 123test_that('extra roles', { 124 rec_4 <- 125 recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur, 126 data = biomass_tr) %>% 127 add_role(nitrogen, new_role = "drummer") %>% 128 step_rm(HHV) %>% 129 step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>% 130 step_corr(all_predictors(), threshold = .6) %>% 131 step_mutate(HHV = 17) %>% 132 prep() 133 134 cols_3 <- c("hydrogen", "nitrogen", "sulfur", "oxygen_o_carbon", "HHV") 135 136 expect_equal( 137 names(juice(rec_4)), 138 cols_3 139 ) 140 expect_equal( 141 names(bake(rec_4, biomass_te)), 142 cols_3 143 ) 144 145 expect_equal( 146 names(juice(rec_4, all_predictors())), 147 cols_3[cols_3 != "HHV"] 148 ) 149 expect_equal( 150 names(bake(rec_4, biomass_te, all_predictors())), 151 cols_3[cols_3 != "HHV"] 152 ) 153}) 154 155 156 157 158 159 160 161