下面的代码抱怨:
UseMethod中的错误(“预测”):没有适用于类“列表”对象的“预测”方法
是否有任何方法将列表元素转换回正确的类型?
编辑:多亏了@李哲源,下面的代码起作用了:
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)发布于 2018-09-05 05:41:42
回归模型存储为带有特殊“类”的“列表”。使用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]] <- logithttps://stackoverflow.com/questions/52177699
复制相似问题