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的“disp”提供较低的CI。
有人可以指出缺少的东西吗?