#' Get the total number of dominant presence rules in the ruleset file
#'
#' \code{totPresRules} Get the total number of dominant presence rules in the ruleset file
#'
#' @param file file name or file path of the ".txt" file of rulesets generated by GARP
#' @param table a data.frame object produced by \code{\link{findModRules}} that contains model numbers (ruleset number) and dominant rule number
#' @param pathA file path to the directory containing environmental grids (must be in ESRI ASCII raster format)
#' @param pathB file path to the directory for ruleset grids produced by GARP
#' @param project logical; indicates if the GARP results are projected to the landscape
#'
#' @return A number of the total number of dominant presence rules.
#'
#' @details While specifying the \code{file} element, include both the path and the full file name,
#' otherwise, set the directory to the rulesets file before running the function.
#'
#' @examples
#' \dontrun{
#' PreNo <- totPresRules(file = "C:/GARP/RuleSets.txt", table = modelRule,
#' pathA = "C:/GARP/resampled/", pathB = "C:/GARP/runs/", project = FALSE)
#' }
#'
#' @import sp
#' @import raster
#'
#' @export
totPresRules <- function(file, table, pathA, pathB,project){
Rulesets<-file
sampledir<-pathA
rsetPridir<-pathB
modelRule<-table
if (project==TRUE){
num=2
}else if (project==FALSE){
num=1
}
ruleset <- scan(Rulesets, what = '')
#cat(ruleset) #show ruleset
list <- grep('\\=\\=\\d+\\=+',ruleset)
modelNumber=c()
number=0
for (k in seq(1,length(modelRule$bestmodel))){
for (i in seq(1,length(list),by=num)){ # loop for model
model <- ruleset[list[i]]
modelNum <- regmatches(model, regexpr("\\d+", model))
if (modelRule$bestmodel[k] == modelNum){
stingend=list[i+1]-1
Rules=c()
for (j in seq(list[i],stingend)){ # loop for rules
if (ruleset[j]=="d"| ruleset[j]=="a" | ruleset[j]=="!" | ruleset[j]=="r"){
Rules <- append(Rules, ruleset[j-1])
Rules <- append(Rules,j-1)
Rules <- append(Rules, ruleset[j])
Rules <- append(Rules,j)
#eachrule <- append(eachrule,ruleset[j])
}
}
for (m in seq(2,length(Rules),4)){
if (m != length(Rules)-2){
a=as.numeric(as.character(Rules[m]))
b=as.numeric(as.character(Rules[m+4]))-1
if (ruleset[b]=="PRESENCE"){
if (ruleset[a] == modelRule$BestRules[k]){
if (ruleset[a+1]=="d"|ruleset[a+1]=="!"){
number=number+1
#print(ruleset[a])
} else if (ruleset[a+1]=="r"){
number=number+1
#print(ruleset[a])
}
}
}
} else {
a=as.numeric(as.character(Rules[m]))
b=as.numeric(as.character(stingend))
if (ruleset[b-1]=="PRESENCE"){
if (ruleset[a] == modelRule$BestRules[k]){
if (ruleset[a+1]=="d"|ruleset[a+1]=="!"){
#print(ruleset[a])
number=number+1
}else if (ruleset[a+1]=="r"){
number=number+1
#print(ruleset[a])
}
}
}
}
}
}
}
}
return (number)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.