R语言AdstockRate函数运行报modfit对象不存在错误如何解决?
R代码报错解决方案
核心报错原因
R语言变量名区分大小写,你在代码前半段定义的模型对象名称为大写F的modFit,但if判断分支中调用summary()时误写为小写f的modfit,二者名称不一致导致程序找不到对应对象触发报错。
其他潜在代码问题
nls函数传参时start参数错误使用赋值符号<-,应改为传参用的=nlsLM函数传参时lower参数同样错误使用赋值符号<-,应改为=- 函数内部变量名
AdstockRate与函数本身重名,存在命名冲突风险,建议更换变量名 - 请提前确保
adstock函数已被正确定义或加载对应依赖包,避免触发函数不存在的报错
修正后完整代码
AdstockRate<-function(Data,Impact,Ads){ modFit<-nls(data=Data,Impact~a+b*adstock(Ads,rate), start = c(a=1,b=1,rate=0)) if(summary(modFit)$coefficients[3,1]>0){ res_rate = summary(modFit)$coefficients[3,1] } else{ library(minpack.lm) nls.out<-nlsLM(Impact~a+b*adstock(Ads,rate),data=Data,start=list(a=1,b=1,rate=0), lower = c(a=-Inf,b=-Inf,rate=0),upper=c(a=Inf,b=Inf,rate=1)) res_rate<-summary(nls.out)$coefficients[3,1] } return(res_rate) }
内容的提问来源于stack exchange,提问作者Euler
相关产品推荐
相关产品推荐

