首先,您需要使用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))
如果我手动运行脚本,R会在每个图表后询问Click or ENTER for next page
。但是当我运行以下功能时,
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))
}
R只询问Click or ENTER for next page
最后一个情节。如何让它询问函数中的每个图?
答案 0 :(得分: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
应该更加聪明。
我只能推测devAskNewPage
出了什么问题。 effect
绘图代码非常精细。它很可能以一种覆盖该设置的方式操纵图形设备。
修改强>
我有点惊讶,但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)
}