使用lmer函数对数据框多列建模时遇错误求助
解决lmer函数公式构建报错的问题
你当前的代码触发invalid model formula错误,核心原因是公式构建逻辑出错:deparse(lmer_formula)[2]返回的内容会让最终拼接出的公式包含两个~符号(比如变成col~. ~ year + (1|subject)),这属于无效的模型公式格式。
修正后的代码
直接为每个因变量列生成正确的模型公式即可:
# 定义批量运行lmer的函数 lmer_function <- function(df, cols) { lmer_results <- list() for (col in cols) { # 直接构建"因变量 ~ year + (1|subject)"格式的公式 col_formula <- as.formula(paste(col, "~ year + (1|subject)", sep = "")) lmer_result <- lmer(col_formula, data = df) lmer_results[[col]] <- lmer_result } return(lmer_results) } # 选择需要分析的目标列 cols <- names(FAI_amb_Study)[7:length(names(FAI_amb_Study))] # 执行批量分析 lmer_results <- lmer_function(df = FAI_amb_Study, cols = cols)
更简洁的写法(用lapply替代循环)
如果不想写循环,也可以用lapply实现批量分析:
cols <- names(FAI_amb_Study)[7:length(names(FAI_amb_Study))] lmer_results <- lapply(cols, function(col) { lmer(as.formula(paste(col, "~ year + (1|subject)")), data = FAI_amb_Study) }) # 给结果列表命名,对应各自的因变量列 names(lmer_results) <- cols
修正后每个模型都会以指定列作为因变量,纳入year作为固定效应,subject作为随机截距项,符合你重复测量数据的分析需求。
内容的提问来源于stack exchange,提问作者Edgar Garcia
相关产品推荐
相关产品推荐

