下面的代码抱怨:
UseMethod(“ predict”)中的错误:'predict'没有适用的方法 应用于“列表”类的对象 >
有什么方法可以将列表元素转换回正确的类型?
编辑:感谢@李哲源,下面的代码可以正常工作:
models <- list(m, logit, loglog)
plot(x,y)
abline(models[[1]],col="black",lty=2)
lines(x,predict(models[[2]], df),col="red",lty=3)
原始代码:
if(!require(betareg)){install.packages("betareg")}
set.seed(123)
x=seq(1,9,1)
print(x)
y=x/10+0+rnorm(length(x),0,.1)
print(y)
m=lm(y~x)
logit<-betareg(y~x,na.action=na.omit)
plot(x,y)
abline(m,col="red",lty=2)
#lines(x,predict(logit, y),col="green",lty=3)
models=c(m,logit)
abline(models[1],col="blue",lty=4)
lines(x,predict(models[2], y),col="blue",lty=5)
答案 0 :(得分:2)
回归模型存储为带有特殊“类”的“列表”。使用c
的直接串联将删除此类“类”。选中length(models)
:您有41个没有2。
使用以下任一选项
models <- c(list(m), list(logit))
models <- list(m, logit)
保留回归模型的“类”,并使用models[[1]]
和models[[2]]
访问这些模型(例如abline(models[[1]])
和predict(models[[2]], y)
)。
或者,预先设置适当的列表并填写(如果您将模型存储在循环中,这将很有用)
models <- vector("list", 2)
models[[1]] <- m
models[[2]] <- logit