2016-08-19 2 views
0

Rのlme4パッケージを使用して単変量グレマーモデルとしてデータセット内の各変数を実行したいと思います。データをdplyr/tidyrパッケージで準備し、各モデルの結果をブームパッケージで整理したいと思います私はその枠組みの中で立ち往生して助けてくれてありがたく思っていますが、私はRでそれほど大きくはありませんが、エラーを投げ、データと同じ構造を持ったデータセットを作り出すことができました(glance(glmer ...)私が使用している:。出力はありませんので、dplyrとbroom :: glanceとのモデル比較:エラーが発生した場合はどうしたらよいですか?

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値を生成、または単にその変数をスキップすることがある私がしました。トラブルメーカー変数を吹き飛ばすために「試行」を使用して試しました:

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

ただし、出力が生成されないのは、「試行錯誤」をdata.frameに強制することができないためです。残念ながら、tryharder機能はありません。私はコンピュータではなく私には意味をなさないif文を試しました。私はそれを正しくやっていないと確信していますが、例えば私が使用している場合:

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

私は下付き文字を受け取りません。あなたが提供できるどんな入力についてもありがとう! glanceへの呼び出しの前に

答えて

1

使用tryCatch

zz = Data %>% 
    gather(Variable, Value, 5:7) %>% 
    group_by(Variable) %>% 
    do(aa = tryCatch(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., 
        family=binomial), error = function(e) data.frame(NA))) 


zz %>% 
    glance(aa) 
+0

信じられません!どうもありがとうございます! –

関連する問題