使用if语句的多个for循环出错

时间:2015-11-02 12:34:50

标签: r function output regression

我正在尝试在R中创建一个函数,该函数将生成单变量和多变量回归模型的结果表

Model Output Table 请参阅下面的功能代码:

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中的多变量模型的数据 - 只有年龄如下所示。

非常感谢任何帮助!

提前谢谢你!

0 个答案:

没有答案