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

封装拟合函数后fixest包update()方法失效的原因与解决办法

解决fixest包中fepois封装自定义函数后update()无法获取数据集的问题

当用R的fixest包把fepois模型拟合逻辑封装到自定义函数里时,调用update()方法会出现无法识别拟合所用数据集的问题。执行update(mod2, . ~ . + log(Year))这类代码时,会触发报错:data参数非矩阵或数据框。

两种解决办法:

  • 强制提前评估数据集表达式
    在自定义函数内部,先把数据集的表达式评估为实际的数据对象,再传入fepois拟合。示例代码:

    fit_fepois <- function(data) {
      # 提前解析并评估数据集
      data_eval <- eval(substitute(data), envir = parent.frame())
      fepois(export ~ log(dist_km) | origin + dest, data = data_eval)
    }
    mod2 <- fit_fepois(trade)
    # 此时update可以正常执行
    update(mod2, . ~ . + log(Year))
    
  • 在update()中重新指定data参数
    直接在调用update()时显式传入原数据集,跳过自动识别的步骤。示例代码:

    # 常规封装的自定义函数
    fit_fepois <- function(data) {
      fepois(export ~ log(dist_km) | origin + dest, data = data)
    }
    mod2 <- fit_fepois(trade)
    # 调用update时手动指定data参数
    update(mod2, . ~ . + log(Year), data = trade)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:42:37