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

R gam包step.Gam逐步回归触发as.data.frame.default错误原因咨询

报错原因分析
  • 核心触发原因:调用step.Gam()时没有显式传入data参数。gam包的step.Gam方法不会自动从你传入的初始模型m.gam.0中提取拟合所用的数据集,必须手动指定data = df。当缺失该参数时,函数内部会错误把其他函数类型的入参当作数据集尝试转换为数据框,就触发了你看到的报错。
  • 潜在冲突风险:dplyr和gam包存在同名函数冲突,两个包都实现了select函数,如果你的加载顺序是先加载gam再加载dplyr,dplyr::select会覆盖gam::select,也可能导致gam.scope或step.Gam的内部调用逻辑异常。
修正后可运行代码
library(dplyr)
library(gam)

data(mtcars)

df = mtcars %>% mutate(vs = as.factor(vs),
                       am = as.factor(am))

f0 = as.formula("mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb")
m.gam.0 = gam(f0, data = df)
# 显式指定dplyr::select避免命名冲突
f.gam.step = gam.scope(frame = df %>% 
                         dplyr::select(mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb),
                       response = 1,
                       arg=c("df=4"))

# 调用step.Gam时显式传入data参数
m.gam.step = step.Gam(object = m.gam.0, scope = f.gam.step, direction="both", data = df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:57:03