diff --git a/R/engine_gdb.R b/R/engine_gdb.R index e622b1bf..63651eeb 100644 --- a/R/engine_gdb.R +++ b/R/engine_gdb.R @@ -559,6 +559,10 @@ engine_gdb <- function(x, newdata$rowid <- 1:nrow(newdata) # Subset to non-missing data newdata_sub <- subset(newdata, stats::complete.cases(newdata)) + if(nrow(newdata_sub)==0) { + cli::cli_alert_danger("Every observation has missing data?") + newdata_sub <- newdata + } if(getOption("ibis.runparallel",default = FALSE)){ check_package("doFuture") diff --git a/R/engine_glmnet.R b/R/engine_glmnet.R index 1c739ac4..c15d0d3f 100644 --- a/R/engine_glmnet.R +++ b/R/engine_glmnet.R @@ -860,6 +860,10 @@ engine_glmnet <- function(x, # Make a subset of non-na values df$rowid <- 1:nrow(df) df_sub <- base::subset(df, stats::complete.cases(df)) + if(nrow(df_sub)==0) { + cli::cli_alert_danger("Every observation has missing data?") + df_sub <- df + } if(!is.Waiver(model$offset)) ofs <- model$offset[df_sub$rowid] else ofs <- NULL assertthat::assert_that(nrow(df_sub)>0) diff --git a/R/project.R b/R/project.R index 15416827..6e497ff5 100644 --- a/R/project.R +++ b/R/project.R @@ -806,7 +806,11 @@ methods::setMethod( # --- # # Now predict - out <- x$project(newdata = env, layer = layer) + out <- try({ x$project(newdata = env, layer = layer) }) + if(inherits(out, 'try-error')){ + cli::cli_alert_danger("Projection failed! Returning emptyraster gracefully") + return(template) + } names(out) <- paste0("suitability", "_", layer) if(is.na(terra::crs(out))) terra::crs(out) <- terra::crs( model$background ) # --- #