R语言使用predict函数遇‘object not found’错误的解决求助
解决R语言predict函数"object not found"错误的方案
问题根源
- newdata变量名不匹配:你的线性回归模型使用的自变量是
rts、size、cpm、pr,但你创建的carvals数据框用了Type和weight作为列名,完全不符合predict函数的要求——它需要newdata包含与模型自变量完全同名的列。 - 变量大小写不一致:你将
sales$size转成因子后存入了sales$Size(大写S),但回归公式里仍用size(小写s),导致模型实际调用的是原始未转换的size列,而非你处理后的因子列。
修正后的代码
sales <- read.csv("CarValues.csv") # 统一变量名大小写,将size列转为因子 sales$size <- as.factor(sales$size) summary(sales) # 构建与数据列名匹配的回归模型 sales.regr <- lm(vs ~ rts + size + cpm + pr, data=sales) # 创建符合要求的newdata:列名必须与模型自变量完全一致 carvals <- data.frame( rts = 75, size = "Upscale Sedan", cpm = 0.72, pr = 3 ) # 执行预测 predict(sales.regr, newdata = carvals, type="response")
关键说明
predict函数的newdata参数必须严格对应模型中的自变量名称,这样函数才能找到用于预测的变量值。同时要保证数据预处理和模型公式中的变量名一致,避免因大小写或名称差异导致的错误。
内容的提问来源于stack exchange,提问作者Aidan Shaw
相关产品推荐
相关产品推荐

