【问题标题】:Handling error in function, notify then skip处理函数中的错误,通知然后跳过
【发布时间】:2017-07-06 08:20:40
【问题描述】:

我在处理一个既可以将回归摘要输出到 csv 文件又可以处理回归分析的函数时遇到问题。所以代码看起来像这样:

我有三个预测变量: age1(连续),gender1(分类 0/1),FLUSHOT(分类 0/1)

在文件中,前 100 列是我要测试的响应变量(所有分类 0/1)。

目标是对每个响应变量 (1:100) 进行回归分析,只输出 p 值、OR 和 CI。

所以我的代码是这样的:

fun1<-function(x){
  res<-c(paste(as.character(summary(x)$call),collapse = " "),
         summary(x)$coefficients[4,4],
         exp(coef(x))[4],
         exp(confint(x))[4,1:2],"\n")

  names(res)<-c("call","p-value","OR","LCI","UCI","")
  return(res)}


res2=NULL
lms=list()
for(i in 1:100)
{
  lms[[i]]=glm(A[,i]~age1+gender1+as.factor(FLUSHOT),family="binomial",data=A)               
  res2<-rbind(res2,fun1(lms[[i]]))
}
write.csv(res2,"A_attempt1.csv",row.names=F)

例如,如果我们在每个类别中都有足够的样本量,或者边际频率如下所示:

table(variable1,FLUESHOT)
   0    1
0  15   3
1  11   19

这段代码运行良好,但如果我们有类似的东西:

 table(variable15,FLUESHOT)
       0    1
    0  15   0
    1  11   19

代码遇到错误,报告并停止。

我尝试了多种使用 try()tryCatch() 的方法,但似乎对我不起作用。

【问题讨论】:

    标签: r function loops error-handling


    【解决方案1】:

    您看到什么错误消息?您可以尝试使用 rms 包中的 lrm 来估计逻辑回归模型。并 texreg 将其输出到 csv。

    【讨论】:

    • 凯特,谢谢你的回复。我得到的错误代码是这样的。 approx(sp$y, sp$x, xout = cutoff) 中的错误:需要至少两个非 NA 值进行插值是否有任何可能的方法来绕过此错误?
    • 嗨 Yayi,这意味着您的数据有时会完全丢失(或只有一个观察结果)。此外,try-catch 只会阻止您在需要删除的数据中找到错误。我建议您遍历数据并检查每个尝试的模型是否正常(例如,将 DV 和特征交叉制表)。
    • 是的,这正是我所做的,在运行之前清理它,并且有效。非常感谢。但是,我仍然希望有一种方法可以输出错误,并在不停止整个过程的情况下继续前进。希望我能弄清楚。
    猜你喜欢
    • 2020-03-11
    • 2014-08-12
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2013-06-09
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多