0

R 用户,我仍然在讨论与我最初的问题相关的点点滴滴,如此处所示,现在我很困惑。

http://stackoverflow.com/questions/12270578/skipping-over-an-error-warning-in-an-lme-loop-in-r

这是使用 mtcars 作为示例数据集的代码。我想保存下面列出的每个响应变量的上下置信区间(但不是截距,尽管我仍然需要 lme 的其他系数,但我已经有了),一次完成(我的真实数据集非常大,我正在尝试尽可能地自动化它)

library(log10)
library(nlme) 
library(lattice)

responseVariables = c("mpg",                                   
 "disp",             
 "hp")

carModels <- list()
carModelNames <- list()
coint<- list()  
coint2<- list()
coint$fixed <- list()
lower<- list() 
upper<- list() 
carCIlower <- list()
carCIupper <- list()


for (i in responseVariables){
    print("Doing: ")
    print(i)
    mtcars$tmp <- as.numeric(mtcars[,i])
    tmpLme <- lme( log10(tmp) ~ I(log10(wt)), random = ~1 | carb / gear / am, data=mtcars,na.action=na.omit ) 
    carModels <- append(carModels, list(tmpLme))
    carModelNames <- append(carModelNames,i) 


    coint <- try(intervals(tmpLme))   
        if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb / gear, data=mtcars, na.action=na.omit);
        coint <- try(intervals(tmpLme));

    } else if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb / gear, data=mtcars, na.action=na.omit, method="ML");
        coint <- try(intervals(tmpLme));

    } else if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb, data=mtcars, na.action=na.omit);
        coint <- try(intervals(tmpLme));
           #} 

    coint2<- append(coint, list(tmpLme))   
    lower <- dim(coint2$fixed)[1]   
    upper <- dim(coint2$fixed)[1]
    carCIlower <- append(carCIlower, coint2$fixed[2,1],lower) 
    carCIupper <- append(carCIupper, coint2$fixed[2,3],upper)  
    vs_wt <- cbind(carModelNames , carCIlower , carCIlower )
    }
        }

目前,如果我为每个响应变量运行命令,我可以获得 CI 值,但不能作为循环的一部分。循环不会超过 coint2 语句。好吧,但它没有给我关于 coint2 及以后的答案。或者,如果我再次运行这些行,它只会给我循环中最后一项的值(i=hp)。此外,我看到有一个不平衡的大括号(我已将其注释掉以向您展示),但如果我使用它,我会为所有 resp 变量的下 CI 和上 CI 提供“disp”的下 CI。

有人可以指出缺少什么吗?

4

0 回答 0