I'm trying to extract random forest rules as text.
dat1 <- readRDS("model_2020-03-01_12.rds")
Features <- c(rownames(dat1$importanceSD[,0]))
featMarks <- c()
for(i in 1:length(Features )){
  featMarks[i] <- paste("X[,",i,"]",sep="")
}
treeList <- RF2List(dat1)
ruleExec <- extractRules(treeList,dataSet,digits=4,ntree=1000)
ruleExec <- unique(ruleExec)
ruleMetric <- getRuleMetric(ruleExec, dataSet, dataSet$Class)
rulesText <- c()
for(i in 1:nrow(ruleMetric)){  
  rulesText[i] <- paste("if ", ruleMetric[i,"condition"]," then ",ruleMetric[i,"pred"],sep="")
}
for(k in 1:length(Features)){
  pattern <- featMarks[k]
  replacement <-  Features[k]
  rulesText <- str_replace(rulesText, pattern, replacement)    
}
For some reason the output I get is the same that went in.
I tried to run it line by line, and it also didn't work.
gsub(pattern, replacement,rulesText)  returned the same result.
Just to clarify the line by line part:
ruleLine <- paste("if ", ruleMetric[1,"condition"]," then ",ruleMetric[1,"pred"],sep="") 
//ruleLine is "if X[,4]<=1.5 & X[,7]<=4.5 & X[,10]<=18 then g" 
for(k in 1:length(Features)){   
pattern <- featMarks[k]   
replacement <-  Features[k]   
ruleLine <- str_replace(ruleLine, pattern, replacement)     
} 
//ruleLine is still "if X[,4]<=1.5 & X[,7]<=4.5 & X[,10]<=18 then g"
What am I missing?
