What is the R equivalent for Excel IFERROR?
Solution 1
You need to use try
or tryCatch
. This should work:
mtry <- try(tuneRF(dat3[, -36], dat3[,36], ntreeTry=1000,
stepFactor=1.5,improve=0.01, trace=TRUE, plot=TRUE))
if (!inherits(mtry, "try-error")) {
best.m <- mtry[mtry[, 2] == min(mtry[, 2]), 1]
rf <- randomForest(classe~.,data=dat3, mtry=best.m, importance=TRUE,ntree=1000)
} else {
rf <- randomForest(classe~.,data=dat3, importance=TRUE,ntree=1000)
}
However, the error given may represent a bug in the tuneRF
function. Can you give a reproducible example, i.e. with a minimal dataset that will produce the error?
Solution 2
The R equivalent to Excel's ifERROR function
try2 <- function(code, silent = FALSE) {
tryCatch(code, error = function(c) {
if (!silent) {"Error Message"}
else{code}})}
Ujjawal Bhandari
Updated on July 29, 2022Comments
-
Ujjawal Bhandari almost 2 years
I am trying to put IFERROR condition in R like Excel IFERROR Function. I am building a random forest model. To fine tune, i use tuneRF function. It helps to give optimal mtry parameter.
#Selecting Optimal MTRY parameter mtry <- tuneRF(dat3[, -36], dat3[,36], ntreeTry=1000, stepFactor=1.5,improve=0.01, trace=TRUE, plot=TRUE) best.m <- mtry[mtry[, 2] == min(mtry[, 2]), 1]
SOMETIMES, the above function returns error if OOB error would not improve in different iterations.
Error in if (Improve > improve) { : missing value where TRUE/FALSE needed.
Next Step : If the above function works fine, i use the value of best.m in the code below.
No ERROR in tuneRF function - Run the code below.
rf <-randomForest(classe~.,data=dat3, mtry=best.m, importance=TRUE,ntree=1000)
ERROR in tuneRF function - Run the code below.
#Train Random Forest rf <-randomForest(classe~.,data=dat3, importance=TRUE,ntree=1000)
Thanks in anticipation! Any help would be highly appreciated.
-
Ujjawal Bhandari almost 9 yearsThanks a ton! I wish i could paste my data here. This error comes rarely so making such dataset that produces this error is very difficult