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 が得られます。
誰かが欠けているものを指摘できますか?