假设我有一个响应变量(我们称之为“Y”)和 2 个因子(因子 A 的水平为 A1 和 A2,因子 B 的水平为 B1 和 B2)
我可以使用 lattice 包中的“直方图”函数来绘制(A1 和 B1)的响应与(A2 和 B2)的响应吗?
我知道
直方图(~y|FactorA*FactorB)
将绘制所有 4 个组合。但是如果我只想要那两个呢?
只是想感谢这个网站上的每个人的所有帮助!
一种方法是使用四种组合创建一个新变量并使用该subset
命令。
FactorAB <- factor(paste(FactorA, FactorB, sep=""))
histogram(~y|FactorAB, subset=FactorAB %in% c("A1B1", "A2B2"))
应该有一种更简单的方法来做到这一点,但这里有一个技巧可以让你非常接近你想要的。
# sample data
dat <- data.frame(Y=rpois(100,20),A=factor(c(rep("A1",50),rep("A2",50))),B=factor(c(rep("B1",50),rep("B2",50))))
dat$B <- sample(dat$B)
# create blank (colourless) histogram
p <- histogram(~Y|A*B,dat,col=0,border=0)
# subset and print blank panels
p[1,]
# draw data from desired panels onto blank "template"
trellis.focus("panel",1,1)
do.call("panel.histogram",trellis.panelArgs(p,1)[1:5])
trellis.focus("panel",1,2)
do.call("panel.histogram",trellis.panelArgs(p,4)[1:5])
trellis.unfocus()
剩下的就是改变上图的下条。调用trellis.focus("strip",1,2)
会使其成为焦点,并且一些合适的其他调用应该能够改变它,但我找不到那会是什么。然而,它可能会过度绘制。