我正在尝试在R中创建一个函数,该函数将生成单变量和多变量回归模型的结果表
loganalmv<- function(preds, preds2, resp, data){
#create empty variables
uni<- NA
unic<- NA
mvc<- NA
r<- NA
#create models
mv<- loganal(preds, resp, data)
for(i in 1:length(preds)){
preds[i]<- preds2[i]
uni[i]<- loganaluni(preds[i], resp, data)
#create loop to call model information and create table rows
for(j in 1:length(uni[[i]][[1]][[1]]$Text)){
for(k in 1:length(mv[[1]][[1]]$Text)){
#univariate models
unic1[j]<-uni[[i]][[1]][[1]]$Text[j] #Coef name
unic2[j]<-uni[[i]][[1]][[2]]$Text #n
unic3[j]<-uni[[i]][[1]][[3]]$Text[j] #OR
unic4[j]<-uni[[i]][[1]][[4]]$Text[j] #CI
unic5[j]<-uni[[i]][[1]][[5]]$Text[j] #P-value
#multivariate model
mvc1[k]<- mv[[1]][[1]]$Text[k] #Coef name
mvc2[k]<- mv[[1]][[2]]$Text #n
mvc3[k]<- mv[[1]][[3]]$Text[k] #OR
mvc4[k]<- mv[[1]][[4]]$Text[k] #CI
mvc5[k]<- mv[[1]][[5]]$Text[k] #P-value
#create rows
if (!is.na(unic1[j]) || !is.na(mvc1[k])) {
if(!is.na(unic1[j]) == !is.na(mvc1[k])){ #If the covariate names match add multivariate data
r[j] <- cbindTable(unic1, unic2, unic3, unic4, unic5, '', mvc2[k], mvc3[k], mvc4[k], mvc5[k], '') #last is comments column
}else{
#if not put '-' in multivariate columns
r[j] <- cbindTable(unic1, unic2, unic3, unic4, unic5, '', rep('-', 5), '')
}
#combine rows
}
out<- rbindTable(r[j])
}
}
}
#print table
return(out)
}
preds
是要单独调用的协变量组
preds2
是在多变量模型中调用的协变量组。在这个例子中,我使用了:
demog <- c("gpid", "age")
resp
是响应变量,data
是我的数据框,loganaluni
是创建glm模型的单变量函数,loganal
是多变量glm模型函数。< / p>
当我打电话给我的功能时:
loganalmv(demog,demog, 'excepted', anal)
I get this output
> loganalmv(demog, demog, 'excepted', anal)
[[1]]
[[1]][[1]]
[[1]][[1]]$Text
[1] "age " "gpid C" "gpid D" "gpid E"
[[1]][[2]]
[[1]][[2]]$Text
[1] 354 354 354 354
[[1]][[3]]
[[1]][[3]]$Text
[1] "1.05" "1.81" "1.70" "17.26"
[[1]][[4]]
[[1]][[4]]$Text
[1] "(1.02, 1.08)" "(0.82, 3.99)" "(0.19, 15.22)" "(2.21, 135.04)"
[[1]][[5]]
[[1]][[5]]$Text
[1] "< 0.001" "0.141" "0.636" "0.007"
[[1]][[6]]
[[1]][[6]]$Text
[1] ""
[[1]][[7]]
[[1]][[7]]$Text
[1] 354
[[1]][[8]]
[[1]][[8]]$Text
[1] "1.04"
[[1]][[9]]
[[1]][[9]]$Text
[1] "(1.02, 1.07)"
[[1]][[10]]
[[1]][[10]]$Text
[1] "0.002"
[[1]][[11]]
[[1]][[11]]$Text
[1] ""
我希望有&#39; gpid B&#39;行1:5中的单变量模型以及gpid级别的行6到11中的多变量模型的数据 - 只有年龄如下所示。
非常感谢任何帮助!
提前谢谢你!