xyplotの各パネルのy軸に異なる制限を指定しようとしていますが、結果は異なるデータサブセットと一致していません。
この問題は、2つの異なるグループ化変数を使用してパネルスライスを定義し、1つ以上のサブグループにデータ値がない場合に発生します。
xyplotは、データのないパネルの軸の準備をスキップしているようです。
次に例を示します。
library(lattice)
df1<-data.frame(
x=rep(1, 4),y=rep(1, 4), cat1=c('A','B','A','B'), cat2=c('1','1','2','2'))
df2<-data.frame(
x=rep(1, 3),y=rep(1, 3), cat1=c('A','B','A'), cat2=c('1','2','1'))
myFun <- function(df) {
print(
xyplot(y ~ x | cat1 * cat2,
data=df,
scales=list(
y=list(
relation='free',
limits=rep(list(c(0,10), c(-100,10)) , 2)))
) )
}
myFun(df1)
myFun(df2)
df1には各サブグループで使用可能なデータがありますが、df2にはありません。myFun(df1)を呼び出すと、期待どおりに機能しますが、myFun(df2)は次のエラーをスローします。
> myFun(df2)
Warning message:
In limitsFromLimitlist(have.lim = have.ylim, lim = ylim, relation = y.relation, :
number of items to replace is not a multiple of replacement length
元のデータフレームの任意のサブセットで関数を機能させたいので、1つ以上のサブグループにデータ値がない可能性が非常に高くなります。
サブグループのデータ値がない場合でも、y軸を適切な制限で表示したいと思います。
これを達成する方法のアイデアはありますか?