0
我在處理一個既能輸出迴歸摘要到csv文件又能處理迴歸分析的函數時遇到問題。因此,代碼如下所示:處理函數中的錯誤,通知然後跳過
我有三個預測變量: AGE-1(連續),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()
,但似乎沒有爲我工作。
吉,謝謝你的回覆。我得到的錯誤代碼是這樣的。 誤差約爲(sp $ y,sp $ x,xout = cutoff): 需要至少兩個非NA值進行插值 是否有任何可能的方法來繞過此錯誤? –
嗨Yayi,這意味着你的數據有時完全缺失(或只有一個觀察)。另外,try-catch只會讓你找不到你需要刪除的數據中的錯誤。我建議你循環播放數據並檢查每個嘗試模型是否可用(例如交叉列表DV和一個功能)。 – katharina
是的,這正是我所做的,在運行之前將其清理乾淨,並且工作正常。非常感謝你。然而,我仍然在跳躍,只會輸出錯誤,然後繼續前進而不停止整個過程。希望我能弄明白。 –