2016-03-26 12 views
0

私は混合モデルをしており、x1-x4と従属変数yの4つの変数を持っています。クラス変数はclaと呼ばれます。現在のモデリング構造は動的にlmerの式を構築する方法は?

md<-lmer(y~x1+x2+x3+x4+(1+x2|cla)+(1+x4|cla),data=mydata) 

しかし、私は私の質問は、私はちょうど選ぶことができるように、私は、このコードはダイナミック作ることができるか、である次の形式

md<-lmer(y~x1+x2+x3+x4+(1+x2|cla)+(1+x3|cla)+(1+x4|cla),data=mydata) 

にモデルを変更したいとしています変数に変換され、モデルに組み込まれます。ちょうど4つの変数については、あまり難しくありません。しかし、より多くの変数を手動で変数を追加するにはかなり課税されます。

ありがとうございます!

答えて

3

事前に式の部分を準備し、それらを一緒に接着し、formulaオブジェクトに強制します。あなたは、独自の変数に個々の部品を準備し、それらを予測可能なもの(x2x37, X4 ) so that you can automatically find them using LS(パターン= ""). You fetch each object using取得, pass that toペースト出来上がり一緒らそれらを接着する, use a collapse`引数に名前を付けることができます。

fixed.part <- "y ~ x1 + x2 + x3" 

x2 <-"(1+x2|cla)" 
x3 <- "(1+x3|cla)" 
x4 <- "(1+x4|cla)" 

random.part <- paste(sapply(ls(pattern = "^x"), get), collapse = " + ") 
formula(paste(fixed.part, random.part, sep = " + ")) 

y ~ x1 + x2 + x3 + (1 + x2 | cla) + (1 + x3 | cla) + (1 + x4 | cla) 

あなたはあまり手動制御をしたい場合、あなたは、「空白」のランダムな部分を構成し、適切な番号を追加し、残りは上記と同じであることができます。たくさんのローマ

x <- "(1+x%s|cla)" 
random.part <- paste(sprintf(x, 1:10), collapse = " + ") 
formula(paste(fixed.part, random.part, sep = " + ")) 

y ~ x1 + x2 + x3 + (1 + x1 | cla) + (1 + x2 | cla) + (1 + x3 | 
    cla) + (1 + x4 | cla) + (1 + x5 | cla) + (1 + x6 | cla) + 
    (1 + x7 | cla) + (1 + x8 | cla) + (1 + x9 | cla) + (1 + x10 | 
    cla) 
+0

感謝を!これは私と一緒に完璧に動作します。 – Beta

+0

@Beta I'vは少し大きめの方法を示すために質問を編集しました。 –

+0

編集した方がはるかに良いです:)ありがとう! – Beta

関連する問題