У меня возникла проблема с функцией, которая может как выводить регрессионную сводку в файлы 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()
, но, похоже, не работал для меня.
Kat, спасибо, что ответили. Код ошибки, который я получил, выглядит следующим образом. Ошибка при приближении (sp $ y, sp $ x, xout = cutoff): Нужно, по крайней мере, два значения не-NA для интерполяции Есть ли какие-либо возможные способы обойти эту ошибку? –
Привет, Yayi, это означает, что ваши данные иногда полностью отсутствуют (или только одно наблюдение). Кроме того, try-catch не позволит вам найти ошибки в данных, которые необходимо удалить. Я предлагаю вам прокрутить данные и проверить, что все в порядке для каждой модели (например, перекрестная табуляция DV и функция). – katharina
Да, это именно то, что я сделал, очистите его перед запуском, и это работает. Большое спасибо. Тем не менее, я все еще скачу, что будет возможность просто выводить ошибку и двигаться дальше, не останавливая весь процесс. Надеюсь, я это выясню. –