2

effectsまず、以下のスクリプトを実行するためのlme4パッケージが必要です

library(effects)
library(lme4)

次のスクリプトがあります

 devAskNewPage(ask=TRUE)

 fm8 <- lmer(Reaction ~ 1 + Days + (1 + Days|Subject), sleepstudy,
          REML = 0, verbose = TRUE)
 plot(effect("Day",fm8))
 qqmath(ranef(fm8))

Click or ENTER for next pageスクリプトを手動で実行すると、R は各グラフの後に尋ねます。しかし、次の関数を実行すると、

somefunc<-function () 
{
 devAskNewPage(ask=TRUE)
 fm8 <- lmer(Reaction ~ 1 + Days + (1 + Days|Subject), sleepstudy,
          REML = 0, verbose = TRUE)
 plot(effect("Day",fm8))
 qqmath(ranef(fm8))

}

RClick or ENTER for next pageは最後のプロットのみを要求します。関数内の各プロットを要求するにはどうすればよいですか?

4

1 に答える 1

3

それらを一緒にプロットしても問題ない場合は、次のことを試してみてください。

library(gridExtra)
somefunc<-function () 
{
 fm8 <- lmer(Reaction ~ 1 + Days + (1 + Days|Subject), sleepstudy,
          REML = 0, verbose = TRUE)
 p1 <- plot(effect("Day",fm8))
 p2 <- qqmath(ranef(fm8))$Subject
 class(p1) <- 'trellis'
 grid.arrange(p1,p2,nrow = 2)
}

効果パッケージは、結果のプロットのクラスである混乱を台無しにするgrid.arrangeため、元に戻す必要がありました。grid.arrangeその辺はもっと賢くなった方がいい気がする

の何が問題なのかは推測することしかできませんdevAskNewPageeffectプロット コードはかなり精巧です。その設定を上書きする方法でグラフィックス デバイスを操作している可能性は十分にあります。

編集

私は少し驚いていますが、Ben Bolker のコメントは正しいです (つまり、これはR FAQ 7.22のバージョン/例、「ラティス/トレリス グラフィックスが機能しないのはなぜですか?」、effectsパッケージがlattice::xyplot内部的に呼び出すためです)。これは、OP の要求どおりに機能します。

somefunc<-function () 
{
 devAskNewPage(ask=TRUE)
 fm8 <- lmer(Reaction ~ 1 + Days + (1 + Days|Subject), sleepstudy,
          REML = 0, verbose = TRUE)
 p1 <- plot(effect("Day",fm8))
 p2 <- qqmath(ranef(fm8))$Subject
 print(p1)
 print(p2)
}
于 2013-04-05T21:20:57.160 に答える