Cam*_*Cam 2 model r function vector dataframe
我正在 R 中构建模型,并且想提取这些模型的 R2 值并将它们存储到向量中。
下面是一个简化的数据框,显示了 6 只熊的速度与其性别、体重、年份和环境温度的关系:
speed<-c(0.5,0.1,0.3,0.4,0.9,0.2)
sex<-c(rep(c("F","M"),times=c(3,3)))
mass<-c(500,400,600,800,700,500)
year<-c(2000,2000,2001,2001,2002,2002)
temp.c<-c(0,2,3,1,3,0)
data<-data.frame(speed,sex,mass,year,temp.c)
data
speed sex mass year temp.c
1 0.5 F 500 2000 0
2 0.1 F 400 2000 2
3 0.3 F 600 2001 3
4 0.4 M 800 2001 1
5 0.9 M 700 2002 3
6 0.2 M 500 2002 0
Run Code Online (Sandbox Code Playgroud)
这里有三个可以使用的模型:
full<-glm(formula = speed ~ sex + mass + year + temp.c, data=data,family=Gamma)
bio<-glm(formula = speed ~ sex + mass, data=data,family=Gamma)
clim<-glm(formula = speed ~ year + temp.c, data=data,family=Gamma)
Run Code Online (Sandbox Code Playgroud)
最后,我已经创建了一个函数来从模型中提取 R2:
R2<-function(x){
psdR2<-cor(data$speed,predict(x))^2
return(psdR2)
}
Run Code Online (Sandbox Code Playgroud)
为了自动从所有三个模型中提取 R2 并将它们存储到向量中,我尝试了以下代码,但这不起作用并且出现错误。
mods<-c(full,bio,clim)
r2.vec<-lapply(mods,R2)
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "c('double', 'numeric')"
Run Code Online (Sandbox Code Playgroud)
我不知道此后该做什么。有什么建议么?
使用
mods <- list(full, bio, clim)
Run Code Online (Sandbox Code Playgroud)
不是
mods<- c(full, bio, clim)
Run Code Online (Sandbox Code Playgroud)
您需要三个模型的列表,您不想将模型组合成单个对象。你可以看到区别
length(list(full,bio,clim))
# [1] 3
length(c(full,bio,clim))
# [1] 90
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |