Skip to content

Commit b2b6dbd

Browse files
committed
Fix issue with sorting of predictor_types
1 parent 162a9ec commit b2b6dbd

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

R/train.R

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,10 @@ methods::setMethod(
604604
model[['biodiversity']][[id]][['predictors']] <- env
605605
model[['biodiversity']][[id]][['predictors_names']] <- names(env)[names(env) %notin% c("ID", "x", "y", "Intercept")]
606606
model[['biodiversity']][[id]][['predictors_types']] <- model[['predictors_types']][model[['predictors_types']][, "predictors"] %in% names(env), ]
607-
}
607+
# makes sure ordering is identical
608+
sort_id <- match(model[['biodiversity']][[id]][['predictors_names']], model[['biodiversity']][[id]][['predictors_types']]$predictors)
609+
model[['biodiversity']][[id]][['predictors_types']] <- model[['biodiversity']][[id]][['predictors_types']][sort_id, ]
610+
}
608611

609612
# If the method of integration is weights and there are more than 2 datasets, combine
610613
if(method_integration == "weight" && length(model$biodiversity)>=2){
@@ -914,7 +917,9 @@ methods::setMethod(
914917
pred_prs <- model$predictors_object$get_names()
915918
model$predictors_names <- pred_tmp
916919
model$predictors_types <- model$predictors_types[model$predictors_type$predictors %in% pred_tmp, ]
917-
model$predictors <- model$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
920+
# make sure all in same order
921+
model$predictors_types <- model$predictors_types[match(model$predictors_names, model$predictors_types$predictors), ]
922+
model$predictors <- dplyr::select(model$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
918923
model$predictors_object <- model$predictors_object$clone(deep = TRUE)
919924
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
920925
model$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
@@ -956,7 +961,9 @@ methods::setMethod(
956961
pred_prs <- model$predictors_object$get_names()
957962
model$predictors_names <- pred_tmp
958963
model$predictors_types <- model$predictors_types[model$predictors_type$predictors %in% pred_tmp, ]
959-
model$predictors <- model$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
964+
# make sure all in same order
965+
model$predictors_types <- model$predictors_types[match(model$predictors_names, model$predictors_types$predictors), ]
966+
model$predictors <- dplyr::select(model$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
960967
model$predictors_object <- model$predictors_object$clone(deep = TRUE)
961968
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
962969
model$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
@@ -990,7 +997,9 @@ methods::setMethod(
990997
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
991998
model2$predictors_names <- pred_tmp
992999
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
993-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1000+
# make sure all in same order
1001+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1002+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
9941003
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
9951004
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
9961005
}
@@ -1121,7 +1130,9 @@ methods::setMethod(
11211130
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
11221131
model2$predictors_names <- pred_tmp
11231132
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
1124-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1133+
# make sure all in same order
1134+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1135+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
11251136
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
11261137
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
11271138
}
@@ -1251,7 +1262,9 @@ methods::setMethod(
12511262
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
12521263
model2$predictors_names <- pred_tmp
12531264
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
1254-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1265+
# make sure all in same order
1266+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1267+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
12551268
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
12561269
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
12571270
}
@@ -1405,7 +1418,9 @@ methods::setMethod(
14051418
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
14061419
model2$predictors_names <- pred_tmp
14071420
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
1408-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1421+
# make sure all in same order
1422+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1423+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
14091424
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
14101425
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
14111426
}
@@ -1531,7 +1546,9 @@ methods::setMethod(
15311546
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
15321547
model2$predictors_names <- pred_tmp
15331548
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
1534-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1549+
# make sure all in same order
1550+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1551+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
15351552
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
15361553
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
15371554
}
@@ -1659,7 +1676,9 @@ methods::setMethod(
16591676
model2$predictors_object <- model$predictors_object$clone(deep = TRUE)
16601677
model2$predictors_names <- pred_tmp
16611678
model2$predictors_types <- model2$predictors_types[model2$predictors_type$predictors %in% pred_tmp, ]
1662-
model2$predictors <- model2$predictors |> dplyr::select(dplyr::any_of(c("x", "y", pred_tmp)))
1679+
# make sure all in same order
1680+
model2$predictors_types <- model2$predictors_types[match(model2$predictors_names, model2$predictors_types$predictors), ]
1681+
model2$predictors <- dplyr::select(model2$predictors, dplyr::any_of(c("x", "y", pred_tmp)))
16631682
if (length(pred_prs[!pred_prs %in% pred_tmp]) > 0){
16641683
model2$predictors_object$rm_data(pred_prs[!pred_prs %in% pred_tmp])
16651684
}

0 commit comments

Comments
 (0)