You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:00:12