[R] missing factor levels in a lattice barchart panel cause unexpected failure

Alex Brown alex at transitive.com
Fri Dec 8 13:27:25 CET 2006


Hi all - I'm trying to generate lattice barchart graphs with missing  
values, and came across the following:

This does not run.  I would expect it to:

library(lattice)
D = data.frame(X=1, Y=factor(letters[2], letters[1:2]))
barchart(~ X, D, groups=Y)

Error in grid.Call.graphics("L_rect", x$x, x$y, x$width, x$height,  
resolveHJust(x$just,  :
	invalid line type

which is simply solved by changing the factor levels:

D$Y = factor(D$Y)
barchart(~ X, D, groups=Y)

or by filling factor levels from the bottom:

D = data.frame(X=1, Y=factor(letters[1], letters[1:2]))
barchart(~ X, D, groups=Y)

However, the failure is important, because it causes the following to  
fail, no matter how Y is levelled

E = data.frame(X=c(1,2,3,4), Y=factor(letters[c(1,2,1,2)], letters 
[1:2]), Z=factor(c("F","F","G","H")));
barchart(~ X | Z, E, groups=Y)

Which is an example of a comparison over multiple tests Z for  
different parameter Y where some Y are missing.

alternative version:

E = data.frame(X=c(1,2,3,4), Y=letters[c(1,2,1,2)], Z=letters[c 
(7,7,8,9)]);
barchart(~ X | Z, E, groups=Y)

I have updated to 2.4.0 and lattice 0.14-16 and the problem still  
exists.

-Alex Brown




More information about the R-help mailing list