如何恢复R中列表元素的类型?

时间:2018-09-05 05:32:40

标签: r statistics linear-regression

下面的代码抱怨:

  

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)

1 个答案:

答案 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