0

R の lme4 パッケージを使用して、データセットの各変数を単変量 glmer モデルとして実行したいと考えています。dplyr/tidyr パッケージでデータを準備し、broom パッケージで各モデルの結果を整理したいと考えています (つまり、do (glance(glmer ...)。そのフレームワーク内にとどまっている助けを最も感謝します.Rはそれほど得意ではありませんが、エラーをスローし、データと同じ構造を持つデータセットを生成できました.' m を使用:

library(lme4)
library(dplyr)
library(tidyr)
library(broom)

Bird<-c(rep(c(0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0),10))
Stop<-c(rep(seq(1,10), 20))
Count<-c(rep(c(rep(c(1,2), each=10)), each=10))
Route<-c(rep(seq(1,10), each=20))
X1<-rnorm(200, 50, 10)
X2<-rnorm(200, 10, 1)
X3<-c(rep(c(0),200))#trouble maker variable

Data<-data.frame(cbind(Bird, Stop, Count, Route, X1, X2, X3))

Data%>%
  gather(Variable, Value, 5:7)%>%
  group_by(Variable)%>%
  do(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=.,     family=binomial)))

最後の変数はエラーを生成するため、出力はありません。私が望むのは、これが発生した場合に出力に NA 値を生成するか、その変数をスキップすることです。「try」を使用して、トラブルメーカー変数を吹き飛ばしてみました。

do(try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=.,       family=binomial))))

それは行いますが、「try-error」を data.frame に強制できないため、出力は生成されません。残念ながらトライハーダー機能はありません。私には理にかなっていますが、コンピューターには意味がない if ステートメントをいくつか試しました。私はそれを正しく行っていないと確信していますが、たとえば次のように使用する場合:

try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial)))->mod
if(is.data.frame(mod)){do(mod)}

範囲外の添字エラーが発生します。ご提供いただけるご意見をお寄せいただき、誠にありがとうございます。

4

1 に答える 1