I am doing mediation analysis in R. My mediator is a binary variable, so model.m is run by glm.
set.seed(2022)
data = data.frame(ID = as.character(seq(1,100,1)),group = seq(1,100,1),
                  iris[1:100,],day1 = rnorm(100), day2 = rnorm(100), day3 = rnorm(100))
data$med = as.factor(ifelse(data$Petal.Width>0.3&data$Petal.Width<1.2,1,0))
data_long <- data %>% 
  pivot_longer(cols = day1:day3, names_to = "day", values_to = "y") %>%
  mutate(day = as.numeric(gsub("day", "", day))) %>%
  dplyr::select(ID, day, Sepal.Length, everything()) %>% 
  as.data.frame(.)
formula <- as.formula(Sepal.Length ~ Species + med + Petal.Length + Sepal.Width + day + (day | group))
out.fit <- lme4::lmer(formula = formula, 
                      data = data_long,
                      control = lme4::lmerControl(optimizer = "bobyqa",
                                                  optCtrl = list(maxfun = 2e5)))
formula_2 <- as.formula(med ~ Species + Petal.Length + Sepal.Width)
med.fit <- glm(formula = formula_2,
               data = data,
               family = "binomial")
result <- mediate(med.fit, out.fit, treat = "Species", 
                  treat.value = "setosa", control.value = "versicolor", 
                  mediator = "med",
                  sims = 100)
However, after I ran the above piece of code, I kept getting error:
Error in factor(PredictMt, levels = 1:m, labels = m.levels) :
object 'm' not found
I checked the original source code and found that m.levels in the source code should be a variable and there isn't an object called m. In other words, m should not be  an object. I don'r understand why the program recognize m as an object.
Also, the code runs totally fine on the continuous mediator. The following code works:
    formula <- as.formula(Sepal.Length ~ Species + Petal.Width + Petal.Length + Sepal.Width + day + (day | group))
    out.fit <- lme4::lmer(formula = formula, 
                          data = data_long,
                          control = lme4::lmerControl(optimizer = "bobyqa",
                                                      optCtrl = list(maxfun = 2e5)))
    
    formula_2 <- as.formula(Petal.Width ~ Species + Petal.Length + Sepal.Width)
    
    med.fit <- lm(formula = formula_2,
                  data = data)
result <- mediate(med.fit, out.fit, treat = "Species", 
                  treat.value = "setosa", control.value = "versicolor", 
                  mediator = "Petal.Width",
                  sims = 100)
