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

使用lapply批量构建零膨胀负二项模型时变量名显示异常的问题

解决零膨胀负二项模型循环中系数名显示异常的问题

问题出在你循环的是数据框的列(数值向量),而非变量名字符串,导致模型公式里的变量被识别为x而非原变量名。以下是两种修正方案:

方案1:用paste动态构建公式

直接循环bin_vars中的变量名字符,拼接成完整的模型公式:

lapply(bin_vars, function(var) {
  # 拼接公式字符串并转为formula对象
  model_formula <- as.formula(paste("milk_Staph_aureus ~", var))
  summary(zeroinfl(model_formula, dist = "negbin", data = lu))
})

方案2:用reformulate构建公式(更简洁)

reformulate函数可以直接通过响应变量和自变量名生成公式,代码更简洁:

lapply(bin_vars, function(var) {
  summary(zeroinfl(reformulate(var, response = "milk_Staph_aureus"), dist = "negbin", data = lu))
})

进阶:给结果列表命名(方便索引)

如果希望结果列表的每个元素对应原变量名,方便后续查看,可以用setNames给列表元素命名:

zinb_summaries <- lapply(setNames(bin_vars, bin_vars), function(var) {
  summary(zeroinfl(reformulate(var, response = "milk_Staph_aureus"), dist = "negbin", data = lu))
})

# 示例:查看sel_feed对应的模型摘要
zinb_summaries$sel_feed

内容的提问来源于stack exchange,提问作者c_j

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:13