如何在lattice的xyplot中移除因子组合的未使用空水平?
解决lattice xyplot空面板问题的方法
直接在xyplot的条件部分使用interaction(fac1, fac2, drop=TRUE)就能自动移除无数据的交叉组合水平,不用额外新建列或切换到ggplot。
原因
你之前用的drop.unused.levels参数只对单个因子生效,没法处理两个因子交叉后产生的空组合——哪怕每个因子的水平本身都有数据,但它们的交叉组合可能没有数据,这个参数不会自动剔除这类空面板。
具体代码示例
先构造一个带空交叉组合的测试数据:
dat <- data.frame( X = rnorm(20), Y = rnorm(20), fac1 = factor(rep(c("A", "B"), each=10)), fac2 = factor(c(rep("X", 5), rep("Y", 5), rep("X", 10))) ) # 这里fac1=B和fac2=Y的组合没有数据
然后用修改后的xyplot代码:
xyplot(Y~X | interaction(fac1, fac2, drop=TRUE), data=dat)
这样生成的面板只会包含有数据的A-X、A-Y、B-X三个组合,空的B-Y面板会被自动跳过。
内容的提问来源于stack exchange,提问作者CodeMaster
相关产品推荐
相关产品推荐

