#fine tuning of RM using a geographic masked approach and AICc as selection criterion path_to_environmental_layers = '' #asc files path_to_occurences = '' #csv file out_file_path_name ='' #csv file files <- list.files(path_to_environmental_layers,pattern='asc',full.names=TRUE) #folder containing environmental layers names<-list.files(path_to_environmental_layers,pattern='asc')#folder containing environmental layers #install.packages("raster") library(raster) Grids <- raster::stack(files) #read in rasters in folder names(Grids)<-names #maintain names occ<-read.csv(path_to_occurences) #occurence records as csv occLonLat<-occ[,c(2,3)] #package ENMeval #if (!require('ENMeval')) install.packages('ENMeval', repos="http://cran.us.r-project.org") #install package library("ENMeval") RES1<-ENMevaluate(occLonLat, Grids, bg.coords = NULL, occ.grp = NULL,bg.grp = NULL, RMvalues = 0.2,fc = "H",overlap = FALSE, aggregation.factor = NULL, bin.output = TRUE, clamp = FALSE,rasterPreds = TRUE, parallel = TRUE, numCores = NULL, n.bg = 10000, method = 'block',categoricals = c("landcover.asc"))# Outfile <- as.data.frame(RES1@results) #note here only for hinge features, definition of categorical variables required bg_coord <-RES1@bg.pts occ_grp<-RES1@occ.grp bg_grp<-RES1@bg.grp rm(RES1) squares<-function(x){ RM <- c(0.4) for (i in 1:75){ RES1<-ENMevaluate(occLonLat, Grids, bg.coords = bg_coord , occ.grp = occ_grp,bg.grp = bg_grp, RMvalues = RM,fc = "H",method = 'user',overlap = FALSE, aggregation.factor = NULL, bin.output = TRUE, clamp = FALSE,rasterPreds = TRUE, parallel = TRUE, numCores = NULL,categoricals = c("landcover.asc")) x<-rbind(x,RES1@results) View(x) rm(RES1) RM<-RM + 0.2} write.csv(x, file = out_file_path_name, append = FALSE,sep = ",", eol = "\n", na = "-9999", dec = ".",col.names = TRUE,row.names=FALSE) return(x)} out<-squares(Outfile)