gpt4 book ai didi

r - 将模型与dplyr和broom::glance: How to continue if error is produced?进行比较

转载 作者:行者123 更新时间:2023-12-03 08:26:46 27 4
gpt4 key购买 nike

我想使用R中的lme4包将数据集中的每个变量作为单变量glmer模型运行。我想使用dplyr/tidyr包准备数据,并使用broom包整理每个模型的结果(即(glance(glmer ...)。我将不胜感激在该框架内提供的帮助。我在R中并不是那么出色,但是能够产生一个引发错误并且与我的数据具有相同结构的数据集m使用:

library(lme4)
library(dplyr)
library(tidyr)
library(broom)

Bird<-c(rep(c(0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0),10))
Stop<-c(rep(seq(1,10), 20))
Count<-c(rep(c(rep(c(1,2), each=10)), each=10))
Route<-c(rep(seq(1,10), each=20))
X1<-rnorm(200, 50, 10)
X2<-rnorm(200, 10, 1)
X3<-c(rep(c(0),200))#trouble maker variable

Data<-data.frame(cbind(Bird, Stop, Count, Route, X1, X2, X3))

Data%>%
gather(Variable, Value, 5:7)%>%
group_by(Variable)%>%
do(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial)))

最后一个变量产生错误,因此没有输出。如果发生这种情况,我想在输出中生成NA值,或者只是跳过该变量。我尝试使用“尝试”来超越麻烦制造者变量:
do(try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=.,       family=binomial))))

这样做,但是仍然无法产生输出,因为它不能强制对data.frame进行“尝试错误”。不幸的是,没有tryharder函数。我已经尝试了一些对我来说有意义的if语句,但对计算机没有意义。我确定我做错了,但是例如,如果我使用:
try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial)))->mod
if(is.data.frame(mod)){do(mod)}

我收到下标超出范围的错误。非常感谢您可以提供的任何输入!

最佳答案

在调用tryCatch之前使用glance:

zz = Data %>%
gather(Variable, Value, 5:7) %>%
group_by(Variable) %>%
do(aa = tryCatch(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=.,
family=binomial), error = function(e) data.frame(NA)))


zz %>%
glance(aa)

关于r - 将模型与dplyr和broom::glance: How to continue if error is produced?进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com